有包含“q_”的字符串,我想提取它后面的所有内容。有些行包含 q_ 的出现,我希望它后面出现的所有内容。该列中的示例值为:
prod-q_cat_trait_cat_social_issue
_prod-q_body_modification_graffiti
event_tickets
dappled_grey
_prod-q_cat_tech_support
我的正则表达式有什么问题,因为我试图删除 q 之后的尾随“_”。
REGEXP_EXTRACT(queue_id, '[^q_]+$')
刚回来
issue
我也尝试过分割方法:
SPLIT(queue_id, 'q_')[OFFSET(2)]
但是这会返回
Array index 2 is out of bounds (overflow)
任何建议。谢谢! (我使用的是 Google Cloud SQL)
最佳答案
使用捕获组,您可以提取第一个之后的所有内容 q_
:
REGEXP_EXTRACT(queue_id, 'q_(.*)')
您可以提取最后一个 q_
之后的所有内容:
REGEXP_EXTRACT(queue_id, '.*q_(.*)')
请参阅regex demo #1和 regex demo #2 .
在这里,q_
找到 q_
的第一次出现,并且 (.*)
将该行的其余部分抓取到第 1 组中,这样是 REGEXP_EXTRACT
返回的值。 .*
尽可能多地匹配除换行符之外的任何 0+ 字符,这就是为什么第二个正则表达式将在最后一次出现 q_
后开始捕获该行的其余部分>.
关于sql - Regexp_extract 出现 '-q_' 后的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57689592/