例:
私の文字列は123456789 nn nn oo nn nn mlm nn203
です。
ターゲットはnn
です。正規表現を使用して逆の検索を行う方法はありますか?
次に、最初から最後までの文字列と一致し、最初の一致結果とその位置を返します。
結果はnn
で、[ - 3]の[-5]末尾に始まります。
私は単純なfuncitontoこのプロセスを行うが、この仕事を行うために正規表現を使用する方法を書いた?
例:
私の文字列は123456789 nn nn oo nn nn mlm nn203
です。
ターゲットはnn
です。正規表現を使用して逆の検索を行う方法はありますか?
次に、最初から最後までの文字列と一致し、最初の一致結果とその位置を返します。
結果はnn
で、[ - 3]の[-5]末尾に始まります。
私は単純なfuncitontoこのプロセスを行うが、この仕事を行うために正規表現を使用する方法を書いた?
最初に、正規表現を探していない場合は、string.rfind
の方がはるかに簡単です。最後の1だけのfindAllを行い、文字列自体については
import re
s = "123456789 nn nn oo nn nn mlm nn203"
match = re.search("(nn)(?!.*nn.*)", s)
# for your negative numbers:
print (match.start()-len(s), match.end()-len(s))
# (-5, -3)
と使用::
あなたは否定先読みを使用して、正規表現を使用することができ、reのマニュアルを参照してください
import re
st='123456 nn1 nn2 nn3 nn4 mlm nn5 mlm'
print re.findall(r'(nn\d+)',st)[-1]
プリントnn5
finditer
を使用して同じことをすることもできますレバントインデックス:
m=re.search(r'(\d+nn)',st[::-1])
offset=m.start(1)
print st[-m.start(1)-len(m.group(1)):-m.start(1)]
プリント:
print [(m.group(),m.start(),m.end()) for m in re.finditer(r'(nn\d+)',st)][-1]
プリント('nn5', 27, 30)
あなたは試合の多くを持っていて、最後にしたい場合は、時にはそれは単に文字列とパターンを逆にする意味がありますnn5
アイデア:
例:
>>> import re
>>> s = "123456789 nn nn oo nn nn mlm nn203"
>>> m = re.search("(nn)", s[::-1])
>>> -m.end(), -m.start()
(-5, -3)
フム、検索した場合にタームは 'na'だったので、文字列(つまり、男または名前にマッチする)の前または後ろに一致させたいですか? –