我在使用Python正则表达式匹配下划线字符时遇到了问题。在shell中测试,结果如下:
>>> import re
>>> re.match(r'a', 'abc')
<_sre.SRE_Match object at 0xb746a368>
>>> re.match(r'_', 'ab_c')
>>> re.match(r'[_]', 'ab_c')
>>> re.match(r'\_', 'ab_c')
我本来期望其中至少有一个能够返回匹配对象。我是做错了什么吗?
re.search
而不是re.match
。
您无需转义re.match(pattern, string, flags=0)
尝试在字符串开头应用模式,返回匹配对象,如果未找到匹配项则返回None。
re.search(pattern, string, flags=0)
扫描字符串以查找与模式匹配的内容,返回匹配对象,如果未找到匹配项则返回None。
_
甚至使用原始字符串。>>> re.search('_', 'ab_c')
Out[4]: <_sre.SRE_Match object; span=(2, 3), match='_'>
re.search(r'\_', 'ab_c')
search
:
re.match
会返回匹配结果。建议使用re.search
。 - rock321987re.match(r'.*\_.*', string)
是什么意思? - MaxNoe