如何在Google BigQuery中删除[]内内容并保留其后文本
Google BigQuery 提取方括号后文本解决方案
你可以使用以下两种正则方法实现需求,之前REGEXP_EXTRACT运行失败一般是匹配规则设置问题:
方案1:REGEXP_EXTRACT 直接提取目标内容
匹配右方括号后的所有有效内容,自动过滤前后
标签:
-- 适用于带<p>标签的原始文本 SELECT REGEXP_EXTRACT('<p>[12 Dec 2012 20:12:12 GMT] The Weather was amazing in Cyprus.</p>', r']\s*(.*?)\s*</p>$') AS result
如果原始文本没有外层
标签,简化为:
-- 适用于无外层标签的原始文本 SELECT REGEXP_EXTRACT('[12 Dec 2012 20:12:12 GMT] The Weather was amazing in Cyprus.', r']\s*(.*)$') AS result
两种写法运行后返回结果均为:The Weather was amazing in Cyprus.
方案2:REGEXP_REPLACE 分步删除冗余内容
先删除开头的方括号及内部内容、外层
前缀,再删除尾部的
后缀:SELECT REGEXP_REPLACE(REGEXP_REPLACE('<p>[12 Dec 2012 20:12:12 GMT] The Weather was amazing in Cyprus.</p>', r'^\s*<p>\[.*?\]\s*', ''), r'\s*</p>\s*$', '') AS result
正则规则说明
\[.*?\]非贪婪匹配方括号及内部所有内容,避免内容本身包含方括号时匹配错误\s*匹配任意数量的空格,兼容方括号和后续文本之间空格数量不固定的场景$匹配字符串结尾,确保提取到方括号后的全部内容
内容的提问来源于stack exchange,提问作者ryan lewis
相关产品推荐
相关产品推荐

