在Python中很幼稚,在学习Python中的re模块时,我发现了一些奇怪的东西(我无法理解):
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)
没有列出[蝙蝠侠]、[蝙蝠侠]?我缺少什么来理解
这是因为您正在使用组
(wo)?
,所以findall
返回与此组匹配的内容:''
代表batman
'wo'
代表batwoman
您可以使用
non-matching group
:pattern = re.compile(r'bat(?:wo)?man')
相关问题 更多 >
编程相关推荐