繁体   English   中英

如何在findex + Python的正则表达式模式中使用{}

[英]How to use {} in regex pattern with findall + Python

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

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)

这将返回输出blahbla findall输出:['blah','blah','blah']

-为什么当findall输出仅在模式中指定{2}次时,findall输出与“ blah”匹配3次?

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

asd = re.compile(r"(blah){4}")
findall output:  ['blah']

-如何使用re.search和re.findall处理{m}?

非常感谢。

如果您想抓住 (blah){2} (那里有2个blah ),则应该将其包装起来:

asd = re.compile(r"((?:blah){2})")

请注意,我确保不要抓住里面的东西(使用?: blah

>>>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']

那里的{4}完全一样。 regex可以找到它,但不会捕获它。 如果您想抓住它,则应该将其包裹起来。

(blah){2}捕获和排气字符串blahblah但仅返回最后 blahblahblah 由于您的字符串中包含三个blahblah ,因此它将输出['blah', 'blah', 'blah']

(blah){4}只能匹配一次,因此可以给您['blah']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM