关于这个问题,但现在已经过时了。如何捕获=符号之前的单词,URL中还有另一个我不想捕获的等号
SELECT
TRIM(',' FROM REGEXP_REPLACE('TType=SEND|Status=OK|URL=min://j?_a=3&ver=1.1|day=3',
'=[^|]+($|\|)', ',')) "PARAMS"
从上面的字符串 TType=SEND|Status=OK|URL=min://j?_a=3&ver=1.1|day=3
我只想要 TType,Status,URL,day
注意:字符串中有一个管道定界符| 对于参数
您可以使用
SELECT ARRAY_TO_STRING (
ARRAY (
SELECT REGEXP_MATCHES (
'TType=SEND|Status=OK|URL=min://j?_a=3&ver=1.1|day=3',
'(?:\||^)(\w+)=', 'g'
)
), ',') as PARAMS
请参阅regex演示。
注意:REGEXP_MATCHES
如果在正则表达式模式中定义了捕获组,则仅返回捕获组值。在这里,模式表示
(?:\||^)
-(匹配的非捕获组)|
或字符串的开头(\w+)
-捕获组1(实际返回值):任意一个或多个字母数字字符=
-一个=
字符的REGEXP_MATCHES
结果是情况下的阵列的第一和然后conveted与一个字符串ARRAY_TO_STRING
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句