努力了解如何在postgresql中制作regexp_match字符串函数的行为符合我的要求。我有一个字符串,我想用一个空格替换多个空格的任何实例。所以例如
'mitt romney'
成为
'mitt romney'
我相信以下代码应该有效:
SELECT regexp_replace('This is a test', '[ ]+', ' ');
预期结果将是
'This is a test'`
但是我回来了
'This is a test'`.
好像替换只是替换了第一场比赛。有谁知道如何解决这个问题?
由于
答案 0 :(得分:8)
我不认为这很奇怪,看起来就像它记录的那样: http://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP
flags参数是包含零个或多个的可选文本字符串 改变函数行为的单字母标志。旗帜我 指定不区分大小写的匹配,而标志g指定 替换每个匹配的子字符串而不是仅替换第一个。
重点,我自己。
答案 1 :(得分:4)
regexp_replace函数中有第四个可选参数,具体时会产生所需的行为。
如果我这样做
regexp_replace('This is a test`, '[ ]+', ' ', 'g')
我得到了理想的结果。