17

私はちょっとばかげているように感じますが、うまくいきません:

import re

a = " ebrj wjrbw erjwek wekjb rjERJK ABB RAEJKE BWE RWEJBEWJ B KREWBJ BWERBJ32J3B23B J BJ235JK BJJ523 2"

print re.match(ur'/(wekjb|ABB)/',a)
if re.match(ur'/(wekjb|ABB)/',a):
    print 'success'

ur'指定されたユーザーaがユニコードの場合があります。wekjbまたはが文字列内にある場合に成功を出力したいのですが、ABB常に.Nonematch

4

2 に答える 2

53

re.match文字列の先頭に暗黙的に固定されます。文字列内の任意の場所にある部分文字列を検索する場合は、次を使用する必要がありますre.search

import re

a = " ebrj wjrbw erjwek wekjb rjERJK ABB RAEJKE BWE RWEJBEWJ B KREWBJ BWERBJ32J3B23B J BJ235JK BJJ523 2"

print re.search(ur'(wekjb|ABB)',a).group()
if re.search(ur'(wekjb|ABB)',a):
    print 'success'

出力:

wekjb
success

また、Python 正規表現/では、先頭と末尾に a を付ける必要はありません。

最後に、これがあなたが望むものだと思うので.group()、行末に追加しました。printそうし<_sre.SRE_Match object at 0x01812220>ないと、あまり役に立たない のようなものが得られます。

于 2013-11-09T01:25:34.397 に答える