gpt4 book ai didi

Python 正则表达式或 |贪心

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:00 26 4
gpt4 key购买 nike

>>> import re
>>> p = re.compile('.*&l=(.*)(&|$)')
>>> p.search('foo&l=something here&bleh').group(1)
'something here&bleh' # want to remove strings after &
>>> p.search('foo&l=something here').group(1)
'something here' # this is OK

python 文档 (2.7) 说 or 运算符 '|'永远不会贪婪。但是我的代码运行不正常。我希望正则表达式在到达下一个时停止搜索,而不是遍历整个字符串。

最佳答案

您需要将第一个捕获组中的 .* 更改为 [^&]*

p = re.compile('.*&l=([^&]*)')

您的正则表达式 p = re.compile('.*&l=(.*)(&|$)') 也匹配额外的字符,因为 .* 里面第一个捕获组是贪婪的,它匹配所有字符直到最后一个。大家都知道 $ 匹配最后存在的边界。因此找到一个匹配项。

所以 .*$ 找到一个匹配项,所以它不会得到 backtarck。

关于Python 正则表达式或 |贪心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31155153/

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