Python:可以将regex和group组合成一行吗?
许多python教程显示了一个使用Python:可以将regex和group组合成一行吗?,python,regex,Python,Regex,许多python教程显示了一个使用re的两行示例 match=re.search('aa?yushi','ayushi') match.group() 建议将两者结合使用吗 re.search('aa?yushi','ayushi').group() 我试过了,但失败了 re.match('\d','a1b2c3d').group() Traceback (most recent call last): File "<stdin>", line 1, in <modul
re
的两行示例
match=re.search('aa?yushi','ayushi')
match.group()
建议将两者结合使用吗
re.search('aa?yushi','ayushi').group()
我试过了,但失败了
re.match('\d','a1b2c3d').group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
re.match('\d','a1b2c3d').group()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
有什么诀窍 实际上,您可以在python 3.7中
这是合法的,但不鼓励这样做,因为无法保证正则表达式确实匹配;当它不匹配时,它返回
None
,并且None
没有.group
方法,因此您会收到一条不太有用的错误消息,如您所见
在您的情况下,您使用re.match
而不是re.search
意外触发了此事件re.match
隐式地锚定在字符串的开头,因此:
re.match('\d','a1b2c3d').group()
失败,因为正在测试的字符串不是以数字开头。通过竞赛,它可以与re.search
配合使用,因为它没有隐含的锚定:
re.search(r'\d','a1b2c3d').group()
注意:我为正则表达式模式使用了原始字符串,因为您应该始终为正则表达式使用原始字符串;在这种情况下,它不使用它就可以工作,但这只是偶然的,而且只适用于Python(因为Python决定将未识别的转义视为文字反斜杠;如果您的模式使用了
\a
、\b
或许多其他转义,它们在str
文字和regex中都有意义,那么它就不会工作了).我遵循了本页给出的匹配与搜索的解释:他们的解释是搜索是多行字符串,匹配是第一行或单行字符串。没有提到锚定在那里。尽管在cmd行上进行测试可以证明您的说法。对于re
模式发现的不同体现,是否有一个好的教程指针?