[解決済み] re.searchとre.matchの違いは何ですか?
質問
の違いは何ですか?
search()
と
match()
関数が
Python
re
モジュール
?
を読みました。 ドキュメント ( 現在のドキュメント )を覚えていないようです。 調べたり、覚え直したりしています。 誰かが例を挙げて明確に答えてくれて、(たぶん)頭に定着してくれることを期待しています。 あるいは、少なくとも、私が質問を返すより良い場所ができ、再学習にかかる時間が少なくなることでしょう。
どのように解決するのですか?
re.match
は文字列の先頭に固定されています。これは改行とは無関係なので
^
をパターンに含めることができます。
として re.match ドキュメント と書かれています。
に0文字以上の文字がある場合 文字列の先頭 が正規表現パターンにマッチする場合は 対応する
MatchObject
のインスタンスです。 返すNone
文字列が これはパターンにマッチすることに注意してください。 長さゼロのマッチとは異なる。注:マッチする場所を特定したい場合 文字列の任意の場所で
search()
の代わりに
re.search
は文字列全体を検索します。
ドキュメントによると
:
文字列のスキャンスルー を探します。 正規表現 パターンがマッチし 対応する
MatchObject
のインスタンスです。 返すNone
の中に位置がない場合は 文字列がパターンにマッチすることに注意してください。 を見つけることとは異なります。 のある時点で長さゼロのマッチが発生します。 の文字列を使用します。
したがって、文字列の先頭でマッチングする必要がある場合、または文字列全体でマッチングする場合は、次のようにします。
match
. その方が速いです。それ以外の場合は
search
.
ドキュメントには
の具体的なセクションがあります。
match
対して
search
は、複数行の文字列もカバーするものです。
Pythonは2つの異なるプリミティブ をベースにした の式で表されます。
match
にマッチするかどうかをチェックします。 のみである。 という文字列があります。 一方search
が一致するかどうかをチェックします。 どこでも という文字列があります(これは Perlはデフォルトでそうします)。なお
match
とは異なる場合があります。search
正規表現を使っても で始まる'^'
:'^'
にのみマッチします。 文字列の先頭、またはMULTILINE
モードでも の後、改行されます。このとき、"match
" の操作は成功します。 パターン でマッチします。 開始 文字列の モードに関係なく、あるいは オプションで指定されたpos
の引数に関係なく の前に改行がある。
さて、話はこれくらいにして。そろそろサンプルコードを見てみましょう。
# example code:
string_with_newlines = """something
someotherthing"""
import re
print re.match('some', string_with_newlines) # matches
print re.match('someother',
string_with_newlines) # won't match
print re.match('^someother', string_with_newlines,
re.MULTILINE) # also won't match
print re.search('someother',
string_with_newlines) # finds something
print re.search('^someother', string_with_newlines,
re.MULTILINE) # also finds something
m = re.compile('thing$', re.MULTILINE)
print m.match(string_with_newlines) # no match
print m.match(string_with_newlines, pos=4) # matches
print m.search(string_with_newlines,
re.MULTILINE) # also matches
関連
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenvなどの違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PicgoのイメージベッドツールをPythonで実装する
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】ValueError: xとyは同じサイズでなければならない