Sql 使用大查询/Google Analytics的Regexp\u Extract将子字符串从字符A提取到字符B或EOL

Sql 使用大查询/Google Analytics的Regexp\u Extract将子字符串从字符A提取到字符B或EOL,sql,regex,perl,google-analytics,Sql,Regex,Perl,Google Analytics,我正在使用Google Big Query,并尝试使用Regexp\u extract将一些信息从一个字符串列提取到另一个列中。简言之: myVariable中的数据: 我想要一个包含以下内容的专栏: 1234 456 我的命令: SELECT Regexp_extract(myVariable, r'SOME_MAGIC') as result FROM table 我尝试了一些魔法: hungry=(.*)[&$] - null, 456 (I learned that $ is

我正在使用Google Big Query,并尝试使用Regexp\u extract将一些信息从一个字符串列提取到另一个列中。简言之:

myVariable中的数据:

我想要一个包含以下内容的专栏:

1234
456
我的命令:

SELECT Regexp_extract(myVariable, r'SOME_MAGIC') as result
FROM table
我尝试了一些魔法:

hungry=(.*)[&$] - null, 456 (I learned that $ is interpreted as is)
hungry=(.*)(&|$) - Error: Exactly one capturing group must be specified
hungry=(.*)^& - null, null
hungry=(&.*)?$ - null, null
我读了,但是那里的数字有固定的长度。也查看了,但是“?=”不是perl的已知命令


有人有主意吗?提前谢谢你

我刚刚找到了如何以不同方式解决问题的答案:

hungry=([0-9]+) - 1234, 456
这不是对我的抽象问题的回答(regex用于选择字符A到[Character B或EOL]),所以它不是那么令人满意。这对我来说是行不通的

yippie/eggs-spam/?portlet:hungry=12AB34

然而,我原来的问题解决了。我把这个问题留了一会儿,以防有人有更好的答案。

我想我遇到了一个类似的问题,那就是我试图选择字符串(link_id)中的最后6个字符作为新列

我不断地得到这个错误:

必须只指定一个捕获组

我的代码原来是:

SELECT
...
REGEXP_EXTRACT(link_id, r'......$') AS updated_link_id
FROM sometable;
SELECT
...
REGEXP_EXTRACT(link_id, r'(......$)') AS updated_link_id
FROM sometable;
为了消除错误并将正确的子字符串作为列检索,我必须在正则表达式字符串周围添加括号

SELECT
...
REGEXP_EXTRACT(link_id, r'(......$)') AS updated_link_id
FROM sometable;