gpt4 book ai didi

regex - 为什么这种否定的后视被认为是成功的正则表达式匹配?

转载 作者:行者123 更新时间:2023-12-04 22:42:11 26 4
gpt4 key购买 nike

我希望这个简单的文本字符串不会被视为匹配:

xyz@xyz:~$ echo xy | perl -n -e 'print if /y(?<!x)/'
xy

但奇怪的是它是。我也试过了@ https://regex101.com/结果是一样的。似乎它会匹配 y ,这让我很困惑。如果我的理解是正确的,上面的正则表达式应该只匹配 y前面没有 x 的 s .

PS:我举了一个简单的例子。一般来说,我想使用负后视来匹配完整的字符串,而不是像 x 这样的单个字符。

我正在使用 Perl 正则表达式。

谢谢

最佳答案

ab意味着 a其次是 b .因此,您正在检查 y在一个位置,然后检查下一个位置之前没有 x .
它前面没有 x ——前面是y - 所以模式匹配。

你要

/(?<!x)y/

或者
/(?:^|[^x])y/

关于regex - 为什么这种否定的后视被认为是成功的正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860510/

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