如何编写此正则表达式?
原点==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/