gpt4 book ai didi

python - 为什么这个环视正则表达式会返回意外结果?

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:31 25 4
gpt4 key购买 nike

txt = "r/1 /r/2 er/3"
x = re.findall("(?!e)r\/[0-9]", txt)

以上代码匹配r/1r/2r/3(即一切)

将其更改为 ?=e 时不匹配任何内容

不是第一个代码应该只匹配 r/1 和 r/2 因为我基本上是在说“匹配模式 r/digit 但前提是它不是以 e"

开头

最佳答案

(?!e)是一个否定的ahead,如果在当前位置的右侧,它的模式找到匹配项,则匹配失败。所以,(?!e)r总是匹配,因为 r不是 e , 和 (?!e)r\/[0-9] = r\/[0-9] (即前瞻是多余的,因为它不会影响匹配过程)。

你想要一个 negative lookbehind , (?<!e) :

(?<!e)r/[0-9]+

参见 regex demo .我还建议量化 [0-9]匹配 1 个或多个数字的模式。

详情

  • (?<!e) - 确保没有 e 的负面回顾紧靠当前位置的左侧
  • r/ - 一个 r/子串
  • [0-9]+ - 1 个以上数字。

关于python - 为什么这个环视正则表达式会返回意外结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54835615/

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