我是正则表达式和大型查询的新手,我想从字符串中提取年龄范围,将其定义为表中的变量,所以我做了这样的事情:
WITH example AS (
SELECT
"Bgfks Falda Tutú De Tul De 5 Capas Para Niñas Con Moño Para El Pelo, Falda Tutú Para Niños - 8-15 Years Old - Rosado" AS name
)
SELECT REGEXP_SUBSTR(LOWER(name),r"[0-9]{1,2}( - | a | to |-|a|to)[0-9]{1,2}") as AGE_RANGE FROM example
有多个组(-|一|到|-|一|到),因为这些是可以存在于数据“1-10”、“1 - 10”、“1到10”、“1到10”、.
但这只是返回捕获组“-”,我想要的是“8-15”。谁能帮我弄清楚我做错了什么?
我检查了一个页面中的正则表达式,我认为我得到的是“组1”,我想要的是“匹配1”。
3条答案
按热度按时间4c8rllxm1#
你可以用一个非捕获组来实现这一点。BigQuery使用
re2
正则表达式语法,非捕获组用(?:re)
表示:输出量:
文档:re2 Syntax reference
mm9b1k5b2#
您可以在下面使用
REGEXP_EXTRACT(name,r '(?i)\d+?(?:-|一|至)?\d +')
nwlls2ji3#
如果您的目标是从文本中提取年龄范围-您可以使用下面的方法,使用ML.GENERATE_TEXT函数,该函数允许您通过使用Vertex AI text-bison自然语言基础模型对存储在BigQuery表中的文本执行生成自然语言任务
如果应用于以下样本数据
与输出