我正在尝试创建一个正则表达式,可以用来提取以下字符串中分配给变量x的值:(req.idf=6ca9a AND (req.ster=201 OR req.ster=st_home) AND (req.ste=hi OR req.ster=hijst_iuer OR ((req.ster=laHome OR req.ster=laHome_Jtre) AND (tax=IN OR taxIP=MX))) AND NOT ((x=u259 AND (x=66438 OR x=5423)) OR x=9853))AND(NOT x=28743)
我试图通过获得分配给变量x的数值来获得以下格式的输出:66438、5423、9853、28743
到目前为止,我已经尝试创建regex如下:(x=[^)]+)
和\bx=([^)]+)\b
,但我无法获得所需的输出。
我将在Redshift中使用regexp_substr
函数进行查询。
2条答案
按热度按时间jdgnovmf1#
REGEXP_SUBSTR的第五个参数允许使用PCRE:
一个或多个字符串文本,指示函数如何匹配模式。可能的值如下:
[...]
这个正则表达式将允许你使用一个正向后查找来得到你想要的:
我在前面添加了一个'('或' ',以防字符串有些可变,但对于您的示例来说,这应该不是必需的。
你可以检查here。
qyuhtwio2#
您将不得不迭代匹配。
Jus run my code snippet:)