the pattern sh-6ren">
gpt4 book ai didi

Python 正则表达式 - 查找和计算字符序列

转载 作者:行者123 更新时间:2023-11-28 21:47:09 26 4
gpt4 key购买 nike

我正在尝试查找(并计算)一系列连接或分隔的字符,如下所示:“abc”(“b”必须跟在“a”之后,“c”必须跟在“b”之后。不区分大小写)

"A big duck!" -> the pattern should be matched once. 
"A big duckabc!" -> The pattern should be matched twice.

我对正则表达式了解得越多,我知道的就越少。这是使用前瞻的问题吗?

最佳答案

您可以使用正则表达式 a.*?b.*?c 来查找 a,然后是 b,然后是 c,中间有一些可选字符。 *? 使那些中间字符串成为非贪婪的(否则你将只获得第二个示例的一个匹配项)。

>>> p = "a.*?b.*?c"
>>> re.findall(p, "A big duck!", flags=re.I) # re.I == ignore case
['A big duc']
>>> re.findall(p, "A big duckabc!", flags=re.I)
['A big duc', 'abc']

您还可以根据要加入的字符构造该正则表达式:

>>> chars = "abc"
>>> p = ".*?".join(chars)

要获取匹配的数量,只需获取结果列表的len即可。


注意:这处理重叠匹配,即re.findall(p, "aaabbbccc", flags=re.I) 将只返回一个匹配。请澄清这是否是一个问题。

关于Python 正则表达式 - 查找和计算字符序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36934903/

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