如何编写此正则表达式?
原点==fo3o321bar423ba 234
结果=>“fo 3 o 321 bar 423 ba 234 z”

select regexp_replace(trim(regexp_replace(trim(regexp_replace('fo3o321bar423ba 234 z', E'([a-z]*[0-9]*)', E'\\1 ', 'g')), E'([0-9]*[a-z]*)', E'\\1 ', 'g')),'[\s.]+', ' ', 'g')

最佳答案

您可以通过以下regexp_replace实现您想要的目标:

SELECT regexp_replace('fo3o321bar423ba 234 z', '([^0-9]|^)([0-9]+)(?=[^0-9]|$)', '\1 \2 ', 'g');

demo
结果:fo 3 o 321 bar 423 ba 234 z
正则表达式匹配:
(^|[^0-9])-字符串或非数字的开头并存储在组1中
([0-9]+)-1个或多个数字
(?=[^0-9]|$)-检查后面是否有非数字或字符串结尾。
替换字符串-'\1 \2 '-back引用模式中用(...)定义的捕获组1和2。
'g'意味着我们要替换所有的事件,而不仅仅是第一次。

关于regex - 我怎样才能为PostgreSQL写这个正则表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31863266/

10-11 00:56