「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"は完璧に動作します。
ここでは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
あなたは単に使うことができ、
if <keyword> in str:
print('Found keyword')
例:
if 'Not Ok' in input_string:
print('Found string')
この場合、絶対にRegExを使用する必要はありません。ただ使用する:
s = 'Test result 1: Not Ok -31.08'
if s.find('Not Ok') > 0 :
print("Found!")
またはすでに述べたように:
if 'Not Ok' in s:
print("Found!")