gpt4 book ai didi

python - 相同的模式但不同的结果

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

在 RegExr.com 的示例部分,有一个 2-5 个字母回文的代码。在 Python 中使用完全相同的模式似乎并不能像 RegExr 那样捕获所有结果!

Python 不会捕获少于 4 个字符的单词,例如“爸爸”和“555”。代码是这样的

\b(\w)?(\w)\w?\2\1

造成这些不同结果的原因是什么?

最佳答案

当第一个捕获组重复时,它在 Python 中使用条件:

\b(\w)?(\w)\w?\2(?(1)\1)

(?(1)\1) 翻译为:如果第一个捕获组成功,则再次匹配第一个捕获组。

差异很可能是由于正则表达式引擎以不同方式处理可选的不匹配捕获组的方式。例如。 RegExr 在您的浏览器中使用 JavaScript 引擎,它将空的捕获组视为未定义。当undefined再次尝试匹配字符串的末尾时,它会成功。然而在 Python 中,它是不同的,并且只有在可选的捕获组成功时才会再次匹配成功。这取决于实现细节。

关于python - 相同的模式但不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373110/

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