2

アドレスのさまざまな式を一致させようとしています:

例: 「398 西ブロードウェイ」

W. または E. (東) または Pl. に一致させたいと思います。場所...など

この正規表現を使用すると非常に簡単です

(W.|West)例えば。

それでも、python reモジュールは、入力しても何にも一致しません

>>> a
'398 W. Broadway'
>>> x = re.match('(W.|West)', a)
>>> x
>>> x == None
True
>>> 
4

2 に答える 2

9

re.match入力文字列の先頭に一致します。

どこでも一致させるには、re.search代わりに使用します。

>>> import re
>>> re.match('a', 'abc')
<_sre.SRE_Match object at 0x0000000001E18578>
>>> re.match('a', 'bac')
>>> re.search('a', 'bac')
<_sre.SRE_Match object at 0x0000000002654370>

参照search() vs. match():

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

于 2013-09-28T18:30:43.987 に答える
3

.match()検索を文字列の最初の文字から開始するように制限します。.search()代わりに使用してください。任意の文字に一致することにも注意してください.(改行を除く)。リテラルのピリオドに一致させたい場合は、それをエスケープします (\.プレーンではなく.)。

于 2013-09-28T18:31:57.390 に答える