gpt4 book ai didi

regex - 了解正向和负向前瞻

转载 作者:行者123 更新时间:2023-12-03 07:26:42 24 4
gpt4 key购买 nike

我试图了解否定前瞻如何在简单的示例中发挥作用。例如,考虑以下正则表达式:

a(?!b)c

我认为负向前瞻匹配一个位置。因此,在这种情况下,正则表达式会匹配任何严格包含 3 个字符且不是 abc 的字符串。

但事实并非如此,如 this demo 所示。 。为什么?

最佳答案

前瞻不消耗任何字符。它只是检查前瞻是否可以匹配:

a(?!b)c

因此,在匹配 a 后,它只是检查后面是否不是b,但不会消耗该not 字符(即 c),后跟 c

a(?!b)c 如何匹配 ac

ac
|
a

ac
|
(?!b) #checks but does not consume. Pointer remains at c

ac
|
c
<小时/>

正向前瞻

正向先行的相似之处在于它尝试匹配先行中的模式。如果可以匹配,则正则表达式引擎将继续匹配模式的其余部分。如果不能,则放弃匹配。

例如

abc(?=123)\d+ 匹配 abc123

abc123
|
a

abc123
|
b

abc123
c

abc123 #Tries to match 123; since is successful, the pointer remains at c
|
(?=123)

abc123 # Match is success. Further matching of patterns (if any) would proceed from this position
|

abc123
|
\d

abc123
|
\d

abc123 #Reaches the end of input. The pattern is matched completely. Returns a successfull match by the regex engine
|
\d

关于regex - 了解正向和负向前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27691225/

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