[英]python regex search and findall
下面是我的代码。 我的理解是我的模式说你必须满足汽车和宠物的要求。 例如,检查单词car和地毯是否都正确。现在重新搜索匹配地毯就可以了。但是re.finall的输出应该是['carpet','car'],但它显示的是['pet','']请让我知道我不正确的地方吗?
import re
string = "carpet and car"
pattern = r'car(pet)?'
print(re.search(pattern, string))
print(re.findall(pattern, string))
这是代码的输出:
<_sre.SRE_Match object; span=(0, 6), match='carpet'>
['pet', '']
返回字符串中模式的所有非重叠匹配项,作为字符串列表。 从左到右扫描该字符串,并以找到的顺序返回匹配项。 如果模式中存在一个或多个组,则返回一个组列表 ; 如果模式包含多个组,则这将是一个元组列表。 空匹配项包含在结果中 。
如果您想要期望的结果,请使用finditer()
。
采用
pattern = r'car(?:pet)?'
代替。 ?:
使组不捕获(请参见regex语法docs ),这与findall
有所不同,因为如果模式中存在捕获组的列表,它将返回捕获组的列表:
>>> re.findall(pattern, "carpet and car")
['carpet', 'car']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.