gpt4 book ai didi

regex - 如何使 javascript regex 在 postgresql regexp_matches 中工作?

转载 作者:行者123 更新时间:2023-11-29 13:10:36 28 4
gpt4 key购买 nike

我希望捕获文档中所有小于 30% 且最多保留 4 位小数的百分比。

这是一个有效的 javascript 正则表达式示例:https://regex101.com/r/iM3nX5/5

当我使用这个正则表达式时 \b(?:[1-2]?[0-9]\.[0-9]{1,4})\b[^a-zA-Z\d<]{0,3}%?在 Postgres 中,它不起作用:

SELECT regexp_matches('11111
11111.
11111.1111
.11111
a111.1111
99
010
101
100
100.01
2.95%
19.5113%
5.32
0.0250
9.32
24.32
0.0023
30.20
29.23', '\b(?:[1-2]?[0-9]\.[0-9]{1,4})\b[^a-zA-Z\d<]{0,3}%?', 'g')

关于使它在 Postgres 中工作所缺少的任何想法?

提前致谢。

最佳答案

单词边界是罪魁祸首。您需要使用 \m/\M 来匹配前导/尾随单词边界,或者 \y 相当于 \b 。查看Table 9.20. Regular Expression Constraint Escapes :

\m   matches only at the beginning of a word
\M   matches only at the end of a word
\y   matches only at the beginning or end of a word

例如你可以使用

'\m(?:[1-2]?[0-9]\.[0-9]{1,4})\M[^a-zA-Z\d<]{0,3}%?'

或者

'\y(?:[1-2]?[0-9]\.[0-9]{1,4})\y[^a-zA-Z\d<]{0,3}%?'

参见 PostgreSQL demo online .结果:

enter image description here

关于regex - 如何使 javascript regex 在 postgresql regexp_matches 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55318677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com