Python在匹配时re.search()
返回一个MatchObject()
实例,它包含一个.start()
为您提供匹配位置的方法:
import re
pattern = re.compile(r',0\*[0-9A-F]{2}')
match = pattern.search(inputstring)
if match:
print match.start()
请注意\*
;星号 ( *
) 是正则表达式元字符,因此需要使用斜杠对其进行转义以匹配文字*
。
定义了一个匹配两个命名范围中的任何字符的[0-9A-F]
字符类,并且下面的类将其限制为恰好{2}
匹配两个字符。
演示:
>>> import re
>>> pattern = re.compile(r',0\*[0-9A-F]{2}')
>>> match = pattern.search('kdjrnnj,0*B3;,w0l44')
>>> match.start()
7
>>> match.group()
',0*B3'
>>> match = pattern.search('qui8ecc),0*21qxxcd4))')
>>> match.start()
8
>>> match.group()
',0*21'
如果您需要删除此字符串之后re.sub()
的所有内容,请改用:
pattern = re.compile(r'(?<=,0\*[0-9A-F]{2}).*')
newstring = pattern.sub('', oldstring)
这使用了后视断言;它查找您的模式,然后匹配后面的所有内容,然后re.sub()
调用从输入字符串中删除匹配的内容。
演示:
>>> pattern = re.compile(r'(?<=,0\*[0-9A-F]{2}).*')
>>> pattern.sub('', 'kdjrnnj,0*B3;,w0l44')
'kdjrnnj,0*B3'
>>> pattern.sub('', 'qui8ecc),0*21qxxcd4))')
'qui8ecc),0*21'
请注意之后的一切,0*B3
和,0*21
现在都消失了。