Python の re モジュール正規表現操作
このモジュールは、Perl と同様の正規表現マッチング操作を提供します。同じことが Unicode 文字列にも当てはまります。
正規表現は特殊な形式を表すため、またはエスケープ文字としてバックスラッシュ「 」を使用しますが、これは Python の構文と競合します。そのため、正規表現が「 」と一致する必要がある場合、Python は正規表現で「 」を表すために「 \\ 」を使用します。数式では、エスケープして " \ " に変える必要があります。また、Python 構文では、文字列内の各文字をエスケープする必要があるため、" \\ " になります。
上記の書き方は面倒だと思いませんか? 正規表現を読みやすくするために、Python は特別に設計した生の文字列を使用しないでください。ここには落とし穴があります。生の文字列は、r"n" など、文字列の接頭辞として「r」を使用します。これは、改行文字の代わりに 2 つの文字「」と「n」を表します。 Python で正規表現を記述する場合は、この形式をお勧めします。
ほとんどの正規表現操作は、モジュールレベルの関数または RegexObject メソッドと同じ目的を達成できます。また、正規表現オブジェクトを最初からコンパイルする必要はありませんが、実際的な微調整パラメータを使用することはできません。
1. 正規表現の構文
スペースを節約するため、ここでは説明しません。
2. March と search の違い
Python には、match と search という 2 つの異なる基本操作があります。一致は文字列の開始点から開始されますが、検索 (Perl のデフォルト) は文字列から一致を開始します。
注: 正規表現が「^」で始まる場合、一致と検索は同じです。 match は、一致した文字列が先頭から一致するか、pos パラメータの位置から一致できる場合にのみ成功します。次のように:
>>> re.match("c", "abcdef")
>>> " )
<_sre.SRE_Match オブジェクト 0x00A9A988>
>>> re.match("c", "cabcdef")
<_sre.SRE_Match オブジェクト 0x00A9AB80>
>>> re。 search ("c","cabcdef")
<_sre.SRE_Match オブジェクト at 0x00AF1720>>>> patterm = re.compile("c")
>>> " )
>>> patterm.match("abcdef",1)
>>> patterm.match("abcdef",2)
3. モジュールの内容
re.compile(pattern, flags=0)
正規表現をコンパイルして RegexObject オブジェクトを返すと、RegexObject を通じて match() メソッドと search() メソッドを呼び出すことができます物体。
prog = re.compile(pattern)
は、
result = re.match(pattern, string)
と同等です。
最初の方法は、正規表現の再利用を実現できます。
文字列内を検索して、正規表現と一致するかどうかを確認します。 _sre.SRE_Match オブジェクトを返すか、一致するものが見つからない場合は None を返します。
文字列の先頭が正規表現と一致するかどうか。 _sre.SRE_Match オブジェクトを返すか、一致するものが見つからない場合は None を返します。
正規表現を使用して文字列を分割します。正規表現を括弧で囲むと、一致する文字列もリストに含まれて返されます。 maxsplit は分離の回数です。maxsplit=1 は 1 回分離します。デフォルトは 0 で、回数に制限はありません。
>>> re.split('W+', '単語、単語、単語。')
>>> re.split('(W+)', '単語、単語、単語。')
['単語', ', ', '単語', ', ', '単語', '.', '']
> ;>> re.split('W+', '単語、単語。', 1)
['単語'、'単語、単語。']
>>> a-f]+', '0a3B9', flags=re.IGNORECASE)
注: 私は Python 2.6 を使用しています。ソース コードを見ると、split() には 2.7 で追加された flags パラメータがないことがわかりました。 。私はこの問題を何度も発見しました。公式ドキュメントがソース コードと矛盾している場合は、ソース コードを参照してその理由を見つける必要があります。
文字列の先頭または末尾に一致がある場合、返されるリストは空の文字列で始まるか空の文字列で終わります。
>>> re.split('(W+)', '...単語、単語...')
['', '...', '単語', ', ', '単語', '...', '']
文字列が一致しない場合は、文字列全体のリストが返されます。
>>> re.split("a","bbb")
['bbb']
re.findall(pattern, string, flags=0)
RE 一致を見つけるすべての部分文字列をリストとして返します。一致は左から右の順序で返されます。一致するものがない場合は、空のリストが返されます。
>>> re.findall("a","bcdef")
[]
['12 ', '32', '43', '3']
>>> 内の一致:
print match.group()
4. 正規表現Formulaオブジェクト
5. コンパイルフラグ
I IGNORECASE
L LOCALE
M MULTILINE
S DOTALL
X 冗長
このフラグにより、より柔軟な形式が提供されるため、正規表現の記述が理解しやすくなります。このフラグを指定すると、RE 文字列内の空白は、空白が文字クラス内またはバックスラッシュの後ろにない限り無視されます。これにより、RE をより明確に整理してインデントすることができます。また、RE にコメントを書き込むこともできますが、コメントはエンジンによって無視されます。コメントには「#」記号が付いていますが、この記号を文字列やバックスラッシュの後に置くことはできません。
最後に: 文字列メソッドを使用できる場合は、正規表現を選択しないでください。文字列メソッドの方が簡単で高速であるためです。
Python の re モジュールの正規表現操作に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...
