根据我正在阅读的一个在线教程,上面说:
可选匹配问号
“有时候有一种模式,你只想选择性地匹配。也就是说,正则表达式应该找到一个匹配项,不管这段文本是否存在。这个?字符将其前面的组标记为模式的可选部分。例如,在交互式shell中输入以下内容:“
>>> batRegex = re.compile(r'Bat(wo)?man')
>>> mo1 = batRegex.search('The Adventures of Batman')
>>> mo1.group()
'Batman'
我的问题:
我正在尝试查找匹配的电话号码,格式为123-456-7890
(不带国家代码)或{
下面是python返回匹配电话号码列表的regex代码:
^{pr2}$然而,我得到的电话号码列表是['', '(933)-', '']
,而不是我想要的['800-420-7240, '(933)-415-863-9900', '415-863-9950']
。在
我能知道我的代码有什么问题吗?我猜是和“?”有关(可选匹配项)
您将可选部分包括在捕获组中,这意味着
re.findall
提供给您的就是这些组。在如果使用非捕获组,则不会发生这种情况。在
来自the docs:
在
在
(重点是我的)
相关问题 更多 >
编程相关推荐