gpt4 book ai didi

regex - 正则表达式否定超前^。+(?!\_\d {3} $)不起作用

转载 作者:行者123 更新时间:2023-12-03 10:57:39 27 4
gpt4 key购买 nike

正则表达式为:

^.+(?!\_\d{3}$)


必须匹配: abc_001_952010923

不得匹配: abc_001_952010923_002

我想使用否定的前瞻,但似乎不起作用(似乎同时满足两种情况)。

https://regex101.com/r/0jt4ut/1

您的帮助将不胜感激。

最佳答案

我将以这种方式来表达您的正则表达式,在模式的开始处使用否定的超前断言:

^(?!.*_\d{3}$).*$


这似乎可以工作 in your updated demo

当前模式中负前行的位置存在的问题是,通过使 .+足够贪心,可以使两个输入字符串匹配。通过在开始时断言,可以确保我们剔除您不需要的输入。

为了更好地理解 abc_001_952010923_002如何实际传递当前的正则表达式,请考虑以下因素:

abc_001_952010923_002 
| matched by .+ | (everything matched except last 2)
|| <-- (?!_\d{3}$) lookahead fires here


也就是说, .+可以消耗整个模式,直到最终数字( 2),然后可以使否定超前通过。

关于regex - 正则表达式否定超前^。+(?!\_\d {3} $)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56946067/

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