Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在正则表达式模式中与findall+Python一起使用{}_Python_Regex_Findall - Fatal编程技术网

如何在正则表达式模式中与findall+Python一起使用{}

如何在正则表达式模式中与findall+Python一起使用{},python,regex,findall,Python,Regex,Findall,我正在创建一个正则表达式,如下所示: import re asd = re.compile(r"(blah){2}") mo = asd.search("blahblahblahblahblahblah ll2l 21HeHeHeHeHeHe lllo") mo1 = asd.findall("blahblahblahblahblahblah") print(mo.group()) print("findall output: ", mo1) 这将返回输出 布拉布拉赫 findall输出:['

我正在创建一个正则表达式,如下所示:

import re
asd = re.compile(r"(blah){2}")
mo = asd.search("blahblahblahblahblahblah ll2l 21HeHeHeHeHeHe lllo")
mo1 = asd.findall("blahblahblahblahblahblah")
print(mo.group())
print("findall output: ", mo1)
这将返回输出 布拉布拉赫 findall输出:['blah','blah','blah']

-为什么findall输出匹配'blah'三次,而它只在模式中指定了{2}次

如果我更改为{4},则findall匹配:

asd = re.compile(r"(blah){4}")
findall output:  ['blah']
-{m}如何用re.search和re.findall处理

非常感谢。

如果你想抓住那些废话,你应该把它们包起来:

asd = re.compile(r"((?:blah){2})")
请注意,我确保不会使用?:

你的{4}也一样。正则表达式会找到它,但不会捕获它。如果你想抓住它,你应该把它包装起来。

blah{2}捕获并耗尽字符串blahblah,但只返回blahblah中的最后一个blah。由于字符串中有三个blahblah,它将输出['blah','blah','blah']


blah{4}只能匹配一次,因此它会为您提供['blah']

blahblah、blahblah和blahblah。三场比赛。每一个都是废话。我想你也想告诉正则表达式引擎也只返回两个值,对吗?然后,您不需要限制量词:使用re.findall获得结果,并使用其索引获得必要的项。
>>>asd = re.compile(r"((?:blah){2})")
>>>mo = asd.search("blahblahblahblahblahblah ll2l 21HeHeHeHeHeHe lllo")
>>>mo1 = asd.findall("blahblahblahblahblahblah")
>>>print(mo.group())
blahblah
>>>print("findall output: ", mo1)
findall output:  ['blahblah', 'blahblah', 'blahblah']