Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:可以将regex和group组合成一行吗?_Python_Regex - Fatal编程技术网

Python:可以将regex和group组合成一行吗?

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

许多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 <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
模式发现的不同体现,是否有一个好的教程指针?