PostgreSQL如何通过正则提取字符串中排除逗号的前两个单词
问题原因
你当前使用的正则会完整匹配「单词+非单词字符+单词」的整段内容,没有单独提取纯单词部分,因此返回的匹配结果自带逗号,数组中仅包含Hi, I一个元素。
正则中\w+匹配连续的字母数字下划线(即单词),\W+匹配连续的非单词字符(包括逗号、空格等分隔符),将需要提取的单词部分用括号包裹为捕获组,就可以单独返回纯单词内容。
解决方案
方案1:返回包含两个纯单词的数组
SELECT regexp_matches('Hi, I am Harry Potter', '^(\w+)\W+(\w+)');
返回结果:{Hi,I}
方案2:返回空格分隔的单个字符串Hi I
将匹配到的数组用空格拼接即可:
SELECT array_to_string(regexp_matches('Hi, I am Harry Potter', '^(\w+)\W+(\w+)'), ' ');
返回结果:Hi I
内容的提问来源于stack exchange,提问作者jian
相关产品推荐
相关产品推荐

