我有线索:我10岁,有500个朋友。我想返回10和500,但是当我执行下面的查询时,它返回空的:
SELECT REGEXP_MATCHES('I have the string: I am 10 years old with 500 friends', '-?\\d+','g');
zfycwa2u1#
问题在于双反斜杠。虽然有些数据库需要转义regex字符类,但postgres只需要一个反斜杠。所以:
select regexp_matches( 'I have the string: I am 10 years old with 500 friends', '-?\d+', 'g' ); ``` `'-?'` 对于示例字符串来说是不合理的。我保持原样,以防你想容纳可能的负数。 db小提琴演示
2lpgd9682#
替换 \\d 与 [0-9] :
\\d
[0-9]
SELECT REGEXP_MATCHES( 'I have the string: I am 10 years old with 500 friends', '(-?[0-9]+)','g' )
输出:
10 500
观看现场演示。
2条答案
按热度按时间zfycwa2u1#
问题在于双反斜杠。虽然有些数据库需要转义regex字符类,但postgres只需要一个反斜杠。
所以:
2lpgd9682#
替换
\\d
与[0-9]
:输出:
观看现场演示。