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 つの名前付き範囲内の任意の文字に一致する文字クラスを定義します。次のクラスは、正確に2 文字の{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
が現在なくなっていることに注意してください。