正则表达式随后捕获字符之前的第一个单词 - Postgresql [英] Regex capture first words before character subsequently - Postgresql

查看:79
本文介绍了正则表达式随后捕获字符之前的第一个单词 - Postgresql的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

参考这个问题但现在在postgress我如何捕获 = 符号之前的单词,URL 中还有另一个我不想捕获的等号

With refference to this question but now in postgress How do i capture the word before the = sign, there is another equal sign in the URL which i do not want to capture

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

注意:字符串有一个管道分隔符 |对于参数

Note: The string has a pipe delimiter | for the parameters

推荐答案

可以使用

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

查看正则表达式演示.

注意:如果在正则表达式模式中定义了捕获组,REGEXP_MATCHES 仅返回捕获组值.在这里,模式意味着

NOTE: REGEXP_MATCHES returns only capturing group value if a capturing group is defined in the regex pattern. Here, the pattern means

  • (?:\||^) - (非捕获组匹配)| 或字符串开头
  • (\w+) - 捕获组 1(实际返回值):任何一个或多个字母数字字符
  • = - = 字符.
  • (?:\||^) - (a non-capturing group matching either) | or start of string
  • (\w+) - Capturing group 1 (the actual return value): any one or more alphanumeric chars
  • = - a = char.

REGEXP_MATCHES 结果先是大小写到数组,然后转换为带有 ARRAY_TO_STRING 的字符串.

The REGEXP_MATCHES result is case to an array first and then conveted to a string with ARRAY_TO_STRING.

这篇关于正则表达式随后捕获字符之前的第一个单词 - Postgresql的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆