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

高洛峰
高洛峰オリジナル
2017-01-12 16:25:441314ブラウズ

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

正規表現オブジェクトをコンパイルする

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

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

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

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

グループ

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

Python 正则表达式的高级用法

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

Python 正则表达式的高级用法

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

Python 正则表达式的高级用法

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

文字列マッチング

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

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

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

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

近隣マッチング (周囲を見回す)

re モジュールは近隣マッチングもサポートしています。例を見てください:

Python 正则表达式的高级用法

通常のマッチング時に関数を使用する

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

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

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

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

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

正規表現を使用する方法

Python 正则表达式的高级用法

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

Python 正規表現の高度な使用法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。