web-dev-qa-db-ja.com

Python特定の単語に一致する正規表現

「Not Ok」という単語を含むテストレポートのすべての行を照合します。テキスト行の例:

'Test result 1: Not Ok -31.08'

私はこれを試しました:

filter1 = re.compile("Not Ok")
for line in myfile:                                     
    if filter1.match(line): 
       print line

http://rubular.com/ に従って動作するはずですが、出力には何も表示されません。どんな考え、何が間違っているのでしょうか? 「。」のような他のさまざまなパラメータをテストしました。そして "^ Test"は完璧に動作します。

11
casper

ここではre.searchではなくre.matchを使用する必要があります。

re.matchの-​​ docs から:

文字列のどこかで一致を検索する場合は、代わりにsearch()を使用します。

正確なWord 'Not Ok'を検索する場合は\b Word境界を使用し、それ以外の場合は部分文字列'Not Ok'のみを検索する場合はsimple:if 'Not Ok' in stringを使用します。

>>> strs = 'Test result 1: Not Ok -31.08'
>>> re.search(r'\bNot Ok\b',strs).group(0)
'Not Ok'
>>> match = re.search(r'\bNot Ok\b',strs)
>>> if match:
...     print "Found"
... else:
...     print "Not Found"
...     
Found
27

あなたは単に使うことができ、

if <keyword> in str:
    print('Found keyword')

例:

if 'Not Ok' in input_string:
    print('Found string')
5
Tej91

この場合、絶対にRegExを使用する必要はありません。ただ使用する:

s = 'Test result 1: Not Ok -31.08'
if s.find('Not Ok') > 0 : 
    print("Found!")

またはすでに述べたように:

if 'Not Ok' in s:
    print("Found!")
1
not2qubit