在Postgres的列中匹配'n'个特殊字符的出现

问题描述 投票:0回答:1

我在postgres中有一个带有以下各列的表

col1           col2
1              A11CC | D05AX
2              N06AX | N07BA
3              D01AC | G01AG | J02AC | S01AX
4              null

我的目标是获取那些单行'|'的行。我尝试了以下查询,但没有给我想要的输出。

select *, regexp_match(col2, '.*\|{1}') from table;

所需的输出是:

col1           col2
1              A11CC | D05AX
2              N06AX | N07BA
regex postgresql
1个回答
0
投票

这应该起作用:

select *, regexp_matches(col2, '^[^\|]*\|[^\|]*$') from table;

您的正则表达式中的问题是.*表示“任何字符0次或多次”,而|匹配“任何字符”。检查this article,以获取有关使用.*的更多信息。

我修改了正则表达式以确保其他字符不是使用|[^\|]

© www.soinside.com 2019 - 2024. All rights reserved.