Python の正規表現に関する知識のまとめと共有
この記事では、Python 正規表現の基本的な知識を紹介します。この記事の内容には、効率的な正規表現の作成方法や正規表現の最適化方法は含まれていません。これらのトピックについては、他のチュートリアルを参照してください。
1. 正規表現の構文
1.1 文字と文字クラス
1 特殊文字: .^$?+*{}[]()|
リテラル値を使用するには、上記の特殊文字をエスケープする必要があります
2。文字クラス
1. [] に含まれる 1 つ以上の文字を文字クラスといいます。文字クラスが照合時に数量指定子を指定しない場合は、そのうちの 1 つだけと照合されます。
2. 文字クラス内で範囲を指定できます、例えば [a-zA-Z0-9] は a ~ z、A ~ Z、0 ~ 9 の任意の文字を表します
3. 左角括弧の後には^ は、[^0-9] などの文字クラスの否定を意味し、数字以外の文字と一致できることを意味します。
4. 文字クラス内では、 を除き、他の特殊文字は特別な意味を持たなくなり、すべてリテラル値を表します。最初の位置に配置された ^ は否定を表し、他の位置に配置された ^ は ^ 自体を表し、中央に配置された - は範囲を表し、文字クラスの最初の文字として配置された - 自体を表します。
5. d s w などの文字クラス内で短縮メソッドを使用できます
3 短縮メソッド
改行文字を除く任意の文字に一致します re.DOTALL フラグがある場合は、改行を含む任意の文字に一致します。文字
dはUnicodeの数字に一致し、re.ASCIIが含まれている場合は0-9に一致します
DはUnicodeの非数字に一致します
sはUnicodeの空白に一致します、re.ASCIIが含まれている場合はtnrfvの1に一致します
SはUnicodeの非数字に一致します空白
wはUnicodeの単語文字に一致、re.asciiが含まれる場合は[a-zA-Z0-9_]のいずれかと一致
WはUnicodeの非モナド文字に一致
1.2量子
1の前の文字に一致します 0または1回
2. * 一致 前の文字と0回以上一致
3. + 前の文字と1回以上一致
4. {m}は前の式とm回一致します
5. {m,}は前の文字と一致します式は少なくとも m 回
6. {,n} は前の正規表現と最大 n 回一致します
7. {m,n} は前の正規表現と少なくとも m 回、最大 n 回一致します
注:
上記の数量子貪欲モードであり、可能な限り何度でも試行します。非貪欲モードに変更したい場合は、量指定子に ? を付けてグループ化してキャプチャします
1. をキャプチャします。 () 内の正規表現の内容をさらに処理するために、左括弧の後に ?: を付けることでこの括弧のキャプチャ機能をオフにすることができます
2. 正規表現の一部を結合して量指定子または |
を使用します 2 リアクションは次のことを指します以前の()でキャプチャされたコンテンツは、グループ番号からのバックリファレンスは、iniblesの名前を参照します。括弧の後に ?P
3 注:
後方参照は文字クラス [] では使用できません。
1.4 アサーションとマーカー
アサーションはどのテキストにも一致しませんが、アサーションが配置されているテキストに特定の制約を課すだけです
1 よく使用されるアサーション:
1. b は単語の境界に一致し、文字クラスに配置されますバックスペースを表す[]
2. BはASCIIタグの影響を受ける非単語境界に一致します
3. Aは先頭に一致します
4. ^は先頭に一致し、MULTILINEフラグがある場合は各改行文字の後に一致します
5. Zは末尾に一致します
6. $は末尾に一致し、MULTILINEフラグがある場合は各改行の前に一致します
7. (?=e) 肯定先読み
8. (?!e) 否定先読み
9 . (?<= e) ポジティブルックバック
10. (? 2 ルックバックの説明
先読み: exp1(?=exp2) exp1 の後の内容は exp2 と一致する必要があります
ネガティブ先読み: exp1 (?!exp2) exp1 の後ろ exp1 より前の内容は exp2 と一致することはできません
ただし、hello の後には world を続ける必要があります。は、「hello wangxing」と「hello world」の一致にのみ使用されます。後者の hello
(?(id)yes_exp|no_exp): ID に対応する部分式が内容と一致する場合、一致します。 yes_exp に一致、そうでない場合は no_exp に一致
1. 正規表現フラグには 2 種類あります 使い方
1. コンパイルメソッドに flag パラメータを渡すことで、 | メソッドを使用して複数のフラグを区切ることができます。 、 re.compile(r"#[da-f]{6}b", re.IGNORECASE|re.MULTILINE) など
2. 正規表現の前に (?flag) を追加して、正規表現にフラグを追加します。 (?ms)#[da-z]{6}b
2. 一般的に使用されるフラグ
re.A または re .ASCII なので、 b B s S w W d D はすべて、文字列が Assume であると想定します。文字列が ASCII であること
re.I または re.IGNORECASE は正規表現で大文字と小文字を無視します
re.M または re.MULTILINE 複数行のマッチングなので、各 ^ は各キャリッジ リターンの後に一致し、各 $ は各キャリッジ リターンの前に一致します
re.S または re.DOTALL は、キャリッジリターンを含む任意の文字との一致を可能にします
re.X または re.VERBOSE 正規表現で使用できます 式は複数行にまたがり、コメントも追加できますが、空白は追加する必要がありますデフォルトの空白は解釈されないため、s または [ ] で表すことができます。例:
re.compile(r"""
src= #src属性の先頭
( ?:
(?P["']) #左引用符
(?P
(?P=quote) # ",re.VERBOSE| re.IGNORECASE)
2.1 正規表現には文字列を処理するための 4 つの主要な関数があります
1. 文字列が正規表現の構文に準拠しているかどうかを確認するために一致し、通常は true を返します。または false
3. 検索文字列内の正規表現に一致するテキストを対応する文字列に置き換えます
4. 正規表現を使用して文字列を分割します式分割
2.2 Python の re モジュールで正規表現を使用する 2 つの方法
1. re.compile(r, f) メソッドを使用して正規表現オブジェクトを生成し、対応するメソッドを呼び出します。このアプローチの利点は、正規表現オブジェクトの生成後に複数回使用できることです。 2. re モジュールには、正規表現オブジェクトの各オブジェクト メソッドに対応するモジュール メソッドが存在します。渡される最初のパラメータは正規表現文字列です。このメソッドは 2.3 正規表現オブジェクトの一般的なメソッドに適しています。
1. rx.findall(s,start, end):
正規表現にグループ化がない場合、リストには一致するすべてのコンテンツが含まれます。の要素はタプルであり、サブグループ内で一致したコンテンツを含みますが、正規表現全体で一致したコンテンツは返しません
2. rx.finditer(s, start, end):
反復可能なオブジェクトを返します
を繰り返します。 iterable オブジェクトを呼び出し、毎回一致するオブジェクトを返します。一致するオブジェクトの group() メソッドを呼び出すと、指定したグループに一致するコンテンツが表示されます。 0 は正規表現全体に一致するコンテンツを示します
3. rx.search( s , start, end):
一致するオブジェクトが見つからない場合はNoneを返します
検索メソッドは一度だけ一致して停止し、それ以降は一致しません
4. rx.match(s, start, end):
文字列の先頭で正規表現が一致した場合は一致するオブジェクトを返し、そうでない場合はNone
5. rx.sub(x, s, m):
文字列を返します。一致する各位置を x に置換し、置換後の文字列を返します。m を指定すると、最大 m 回置換されます。 x には、/i または /g
モジュールメソッドre.sub(r, x, s, m)のxは関数が使えます。現時点では、キャプチャしたコンテンツをこの関数を通じてプッシュして処理し、一致したテキストを置き換えることができます。
6. rx.subn(x, s, m):
re.sub() メソッドと同じですが、違いはタプルを返す点で、その 1 つは結果文字列で、もう 1 つは結果文字列の数です。交換品。
7. rx.split(s、m):文字列の分割"(d)[a-z]+(d)")
s = "ab12dk3klj8jk9jks5"
result = rx.split( s)
Returns ['ab1', '2', '3', 'klj', '8' , '9', 'jks5']
8. rx.flags(): 正規表現のコンパイル時に設定されるフラグ
9. rx.pattern(): 正規表現のコンパイル時に使用される文字列
2.4 オブジェクトを照合するプロパティとメソッド
01. m.group(g, ...)
03. m.groups(デフォルト)
タプルを返します。コンテンツをキャプチャするすべてのサブグループが 1 から含まれます。デフォルト値が指定されている場合、この値はコンテンツをキャプチャしないグループの値として使用されます
コンテンツと一致する名前、または名前が使用されていない場合は、None (一般的には使用されません)を返します
05. m.lastindex()
コンテンツと一致する最も大きい番号のキャプチャグループの番号、そうでない場合は、なしを返します。
06. m.start(g):
現在一致しているオブジェクトのサブグループを文字列内のその位置からマッチングします 現在のグループが一致に参加していない場合は-1が返されます
07. m.end( g)
現在の一致 オブジェクトのサブグループ化は文字列のその位置で終了します。現在のグループが一致に参加していない場合は、-1 が返されます。 m.span()
内容が m のタプルを返します。 start(g)と m.end(g)の戻り値
09. m.re()
この一致オブジェクトを生成する正規表現
10. m.string()
一致または一致の検索に渡される文字列
11. m.pos()
検索の開始位置。つまり、文字列の先頭、または start で指定した位置 (一般的には使用されません)
12. m.endpos()
検索の終了位置。つまり、文字列の終了位置、またはendで指定した位置(一般的には使用されません)
2.5 まとめ
1. 正規表現マッチング関数については、Pythonにはtrueとfalseを返すメソッドはありませんが、matchメソッドやsearchメソッドの戻り値がNoneかどうかで判断できます
2. 正規表現検索関数については、 1 回だけ検索する場合は、search メソッドまたは match メソッドによって返される一致オブジェクトを使用して取得できます。複数の検索の場合は、反復アクセスのために finditer メソッドによって返される反復可能オブジェクトを使用できます。 、正規表現オブジェクト メソッドの sub または subn を使用することも、re モジュール メソッド sub または subn を通じて実装することもできます。違いは、モジュールの sub メソッドの置換テキストを関数を使用して生成できることです。
4. 正規表現分割機能については、正規表現オブジェクトメソッドの分割を使用できます。正規表現オブジェクトがグループ化されている場合、グループによってキャプチャされたコンテンツも返されるリストに配置されることに注意してください
以上がPython の正規表現に関する知識のまとめと共有の詳細内容です。詳細については、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)

ホットトピック











PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonコードをSublimeテキストで実行するには、最初にPythonプラグインをインストールし、次に.pyファイルを作成してコードを書き込み、Ctrl Bを押してコードを実行する必要があります。コードを実行すると、出力がコンソールに表示されます。

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

Visual Studioコード(VSCODE)でコードを作成するのはシンプルで使いやすいです。 VSCODEをインストールし、プロジェクトの作成、言語の選択、ファイルの作成、コードの書き込み、保存して実行します。 VSCODEの利点には、クロスプラットフォーム、フリーおよびオープンソース、強力な機能、リッチエクステンション、軽量で高速が含まれます。

メモ帳でPythonコードを実行するには、Python実行可能ファイルとNPPEXECプラグインをインストールする必要があります。 Pythonをインストールしてパスを追加した後、nppexecプラグインでコマンド「python」とパラメーター "{current_directory} {file_name}"を構成して、メモ帳のショートカットキー「F6」を介してPythonコードを実行します。
