>>> import re
>>> s = 'this is a test'
>>> reg1 = re.compile('test$')
>>> match1 = reg1.match(s)
>>> print match1
None
sの終わりのテストに一致するキキで。何が恋しいですか?(私も試しre.compile(r'test$')
ました)
使用する
match1 = reg1.search(s)
代わりは。match
関数は文字列の先頭でのみ一致します...ここのドキュメントを参照してください:
Pythonは、正規表現に基づいて2つの異なるプリミティブ操作を提供します
re.match()
。文字列の先頭でのみ一致をre.search()
チェックし、文字列の任意の場所で一致をチェックします(これはPerlがデフォルトで行うことです)。
正規表現が文字列全体と一致しません。役に立たないことを述べたように、代わりに検索を使用するか、完全な文字列に一致するように正規表現を変更することができます。
'^this is a test$'
または、読むのはやや難しいが、役に立たない:
'^t[^t]*test$'
それはあなたがやろうとしていることに依存します。
これは、期待されるパターンが見つからなかった場合にそのmatch
メソッドが返されるためです。パターンが見つかった場合は、タイプが。のオブジェクトが返されます。None
_sre.SRE_match
したがって、ブール(True
またはFalse
)の結果match
が必要な場合は、結果がそうであるかどうかを確認する必要がありますNone
。
テキストが一致しているかどうかを次のように調べることができます。
string_to_evaluate = "Your text that needs to be examined"
expected_pattern = "pattern"
if re.match(expected_pattern, string_to_evaluate) is not None:
print("The text is as you expected!")
else:
print("The text is not as you expected!")