如何在 GROUP BY 和第一个空格之间匹配字符串,前面没有逗号



有字符串:

GROUP BY id,asd, asddd, adfasd LIMIT 4;
=> id,asd, asddd, adfasd
GROUP BY id,asd, asddd, adfasd order id asc;
=> id,asd, asddd, adfasd
GROUP BY id limit 4;
=> id

如何在不带逗号的情况下匹配 GROUP BY 和第一个空格之间的值...?

试试这个正则表达式:

GROUP BY (.*[^s]+s*,s*[^s]+)

在这里演示:

正则表达式101

这个正则表达式完成了这项工作: (?<=GROUP BYs+)(w+(?:s*,s*w+)*)

解释:

(?<=GROUP BYs+): lookbehind, make sure we have "GROUP BY"
(               : start group 1    
  w+           : 1 or more word character
  (?:           : start non capture group
    s*         : 0 or more spaces
    ,           : a comma
    s*         : 0 or more spaces
    w+         : 1 or more word character
  )*            : group may occurs 0 or more times
)               : end group 1

输入字符串:

GROUP BY id,asd, asddd, adfasd LIMIT 4;
GROUP BY id,asd, asddd, adfasd order id asc;
GROUP BY id , asd limit 4;

输出:

'id,asd, asddd, adfasd'
'id,asd, asddd, adfasd'
'id , asd'

最新更新