17
>>> import re
>>> s = 'this is a test'
>>> reg1 = re.compile('test$')
>>> match1 = reg1.match(s)
>>> print match1
None

sの終わりのテストに一致するキキで。何が恋しいですか?(私も試しre.compile(r'test$')ました)

4

3 に答える 3

33

使用する

match1 = reg1.search(s)

代わりは。match関数は文字列の先頭でのみ一致します...ここのドキュメントを参照してください:

Pythonは、正規表現に基づいて2つの異なるプリミティブ操作を提供しますre.match()。文字列の先頭でのみ一致をre.search()チェックし、文字列の任意の場所で一致をチェックします(これはPerlがデフォルトで行うことです)。

于 2012-10-22T15:27:54.610 に答える
1

正規表現が文字列全体と一致しません。役に立たないことを述べたように、代わりに検索を使用するか、完全な文字列に一致するように正規表現を変更することができます。

'^this is a test$'

または、読むのはやや難しいが、役に立たない:

'^t[^t]*test$'

それはあなたがやろうとしていることに依存します。

于 2012-10-22T15:31:35.923 に答える
0

これは、期待されるパターンが見つからなかった場合にその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!")
于 2019-11-30T20:40:10.343 に答える