在Python中天真,在学习Python模块时,我发现了一些奇怪的东西(我无法得到):
import re
pattern = re.compile(r'[0-9]{3}-[0-9]{3}-[0-9]{4}')
list_phoneNumbers = pattern.findall('phone number : 123-456-7894, my home number : 789-456-1235')
print(list_phoneNumbers)
pattern = re.compile(r'bat(wo)?man')
batman_match = pattern.search('batman is there')
batwoman_match = pattern.search('batwoman is there')
bat_list_all = pattern.findall('batman is there but not batwoman')
print(batman_match.group())
print(batwoman_match.group())
print(bat_list_all)
输出:
['123-456-7894', '789-456-1235']
batman
batwoman
['', 'wo']
为什么print(bat_list_all)
却没有给出列表['batman','batwoman']?我不明白为什么?
问题来源:stackoverflow
这是因为您正在使用群组(wo)?
sofindall
返回与该组匹配的内容:
您可以使用不匹配组
:pattern = re.compile(r'bat(?:wo)?man')
*
re.findall():以字符串列表形式返回字符串中所有不重复的模式匹配项。从左到右扫描字符串,并以找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回一个组列表;如果模式包含多个组,则这将是一个元组列表。空匹配项包含在结果中。
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。