如何改写REGEXP_EXTRACT语句提取特定格式页面标题中的bbbb内容?
解决正则提取页面标题中指定内容的问题
你用的REGEXP_EXTRACT(page title, '\\|(.*)\\|')之所以返回bbbb | cccc,是因为.*属于贪婪匹配,会从第一个|后一直匹配到倒数第二个|的位置,把中间所有内容都包含进去了。
要只提取bbbb,可以用两种方式改写正则:
方式一:使用非贪婪匹配符
.*?,让正则匹配到第一个后续的|就停止:REGEXP_EXTRACT(page title, '\\|\\s*(.*?)\\s*\\|')这里的
\\s*是用来匹配|前后可能存在的空格,避免提取结果带多余空格。方式二:使用字符集排除
|,直接匹配所有非|的字符,更精准:REGEXP_EXTRACT(page title, '\\|\\s*([^|]+)\\s*\\|')[^|]+表示匹配任意数量(至少一个)非|的字符,从根本上避免跨|匹配的问题。
如果你的页面标题格式固定是aaaa | bbbb | cccc | dddd,两种方式都能准确提取到bbbb。
内容的提问来源于stack exchange,提问作者Chris Chong
相关产品推荐
相关产品推荐

