Python での正規表現の高度な使用法

巴扎黑
リリース: 2017-03-30 14:15:22
オリジナル
1859 人が閲覧しました

Python の場合、正規表現を学習するには、モジュール re の使用方法を学習する必要があります。この記事では、誰もがマスターすべき高度なテクニックをいくつか紹介します。

正規表現オブジェクトのコンパイル

re.compile 関数は、パターン文字列とオプションのフラグ パラメーターに基づいて正規表現オブジェクトを生成します。このオブジェクトには、正規表現の一致と置換のための一連のメソッドがあります。使用法には若干の違いがあります。たとえば、文字列を一致させるには、次のメソッドを使用できます。

compile を使用する場合は、次のようになります。

なぜこのように使用する必要があるのですか?実際、正規表現のマッチングの速度を向上させるために、正規表現オブジェクトが再利用されます。 2 つの方法の効率を比較してみましょう:

Python での正規表現の高度な使用法

2 番目の方法の方がはるかに高速であることがわかります。実際の作業では、コンパイルされた正規表現オブジェクトを使用すればするほど、効果が向上することがわかります。

グループ

一致するコンテンツをグループ化する使用法を見たことがあるかもしれません:

Python での正規表現の高度な使用法

一致するオブジェクトに括弧を追加することで、一致結果を正確に一致させることができます。ネストされたグループ化も実行できます:

Python での正規表現の高度な使用法

グループ化はニーズを満たすことができますが、可読性が低い場合があります。その場合は、グループに名前を付けることができます:

Python での正規表現の高度な使用法

現在、可読性は非常に高くなります。

文字列マッチング

sed を学習した学生は、次の置換使用法を見たことがあるかもしれません:

この 1 は、前の通常の一致の結果を表します。上記の sed は、一致した結果に角かっこを追加します。

re モジュールにはこのような使用法もあります:

Python での正規表現の高度な使用法

名前付きグループ化を使用することも可能です:

Python での正規表現の高度な使用法

近隣マッチング (Look around)

re モジュールは近隣マッチングもサポートしています。例を見てみましょう わかりました:

Python での正規表現の高度な使用法

通常のマッチングには関数を使用してください

これまでに見たことのほとんどは式のマッチングですが、場合によっては、特に置換の場合、要件がより複雑になることがあります。

たとえば、次の文のように、チャット レコードを Slack の API 経由で取得できます。

そのうちの <@U1EAT8MG9> と <@U0K1MF23Z> は、Slack によってカプセル化されているため、インターフェイスはこの対応関係を取得します。

結果は次のようになります。

対応関係を解析した後、山かっこも削除されることを望みます。置換結果は「@xiaoming, @laolin確かにこのようです」

正規表現を使用する方法

Python での正規表現の高度な使用法

ですから、もちろんパターンも関数にすることができます

以上がPython での正規表現の高度な使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート