gpt4 book ai didi

python - 正则表达式 Findall 在第一次出现时停止搜索

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

我正在尝试使用 RegEx 查找某个字符串。我想找到“以‘f’开头并以前 2 结尾的内容”(它必须只包含一个 2)。在这个例子中,我想找到 result = "fdba12" 但下面的代码给了我 'fdba12312' (包含两个 2)。当我立即找到 2 时,如何停止搜索?

import re
string2 = "asfdba12312 sssdr1 12şljş1 kf"

t = re.findall(r'[f][\w]*[2]', string2 )
print(t)

最佳答案

问题是您的正则表达式包含 \w* 模式,该模式也可以匹配相邻的 2 模式。有两种方法可以实现您的需要:1)使用 rock321987 建议的惰性量词,以及 2)在否定字符类 [^...] 中使用反向速记字符类,并且也否定2

因此,使用

f[^\W2]*2

参见 regex demo

[^\W2]* 模式匹配非单词字符以外的零个或多个字符(因此,它匹配所有单词字符)和 2 以外的字符.

注意:此处贪心匹配比惰性匹配更快。

关于python - 正则表达式 Findall 在第一次出现时停止搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37528650/

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