1. ホーム
  2. Web プログラミング
  3. 正規表現

正規表現を使ったグループ分けと引用

2022-01-03 23:40:13

0. の前に書く。

今日は、グループ化、参照について、規則的に、実際に 最初の記事 実は、最初の記事で

コピーコード コードは以下の通りです。

^([1-9][0-9]? |1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\. (0|[1-9][0-9]? |1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$

以下のように省略することができます。

コピーコード コードは以下の通りです。

^(Condition 1)(\. (condition 2)){3}$

式の中にいくつかの括弧のペアがあるのがわかると思います。なぜ括弧で式を囲むのか、これらの括弧はどのような働きをするのか、一緒に見ていきましょう。

1. グループ分けとナンバリング

括弧は規則的なパターンでグループ化するために使用することができます。括弧で囲まれた部分は部分式と呼ぶことができ、サブグループとして保存されます。

例として、2021-06-01 13:14:21という日時があり、そこから日時を抽出するために、以下のように括弧でグループ化したいとします。

この図には2つのグループがあり、日付のグループ分けが1つ目、時間のグループ分けが2つ目であることがおわかりいただけると思います。左括弧の位置でグループ化のラベルを示し、1から順に、左括弧の数がグループの数となるようにしています。

上の栗では、もう少し分解してみましょう。以下のように、年、月、日、時、分、秒をそれぞれ抽出したい。

日付のグループには1、時刻のグループには5、年、月、日のグループには2、3、4、時、分、秒のグループには6、7、8とそれぞれ番号が振られていることがわかります。

2. サブグループを保存しない

サブグループはややパフォーマンスが高く、単にグループ化したいだけで、後で使いたくない場合もあるので、左括弧の後に ? : で、サブグループが保存されないことを示します。

例えば、対象文字列中の15桁や18桁の数字をregularでマッチングさせる必要がある場合です。

<テーブル 機能 レジエクスプ 例 サブグループの保存 (レギュラー) \Ъ(ЪдЪ)Ъ? サブグループを保存しない (? :regular) \Ъ(? :Ъ)Ъ?

先ほど話したIPv4の正規表現を最適化するには

コピーコード コードは以下の通りです。

^(? :[1-9][0-9]? |1[0-9][0-9]|2[0-4][0-9]|25[0-5])(? : \. (? :0|[1-9][0-9]? |1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$

3. グループ化されたリファレンス

グループ化について説明した後、グループを参照する方法について見てみましょう。 バックスラッシュ+数字 はほとんどの言語で使用できますが、JavaScript などの一部の言語では ドル記号 + ナンバリング を次のように記述します。

<テーブル プログラミング言語 ルックアップ時の引用スタイル で置き換え パイソン \を入力します。 \を使用します。 行く 公式パッケージではサポートされていません 公式パッケージがサポートしていない ジャワ \を選択します。 $number as in $1 ジャバスクリプト $number as $1 $number as in $1 PHP \を指定します。 \を使用します。 ルビー \を選択します。 \を使用します。

4. 検索と置換

 検索

ここまでで、グループ化と参照について学びましたので、実践してみましょう。対象となる文字列の中で繰り返し出てくる2つの単語を探すという要求がある。

単語の境界についてはまだ習っていないので、まずは \w{2,} で出現する単語を示し、繰り返される単語は (\w{2,} \1) を実行し、その結果をご覧ください。

交換

上記では、日付をグループ化して置換する話をしました。

対応するPythonのコードは以下の通りです。

import re

test_str = "2021-06-01 13:14:21"
regex = r"((\d{4})-(\d{2})-(\d{2})) ((\d{2}):(\d{2}):(\d{2}))"
subst = r"\2 years \3 months \4 days \6 hours \7 minutes \8 seconds"
result = re.sub(regex, subst, test_str)
print(result)

Output: June 01, 2021 13h 14m 21s


5. テキストエディタでの使用

正規表現はコードだけでなく、テキストエディタでも使えるので、Sublime Text 3は正規の検索と置換を行う例です。

クリック 検索 -> 検索 オプション、またはショートカットキー Ctrl + F をクリックして、検索機能を呼び出します。

クリックすると 検索 -> 置換 オプション、またはショートカットキー Ctrl + H をクリックして、置換機能を呼び出すことができます。

検索

メールボックスを検索する機能を実装してみましょう、ここでメールの定期は、ちょうど使用する簡単なデモです、ときにすべてを検索ボタンをクリックすると、メールボックスが検出されていることがわかります、この時点でCtrl + Cのコピーをクリックすると、個別に検出メールボックスを貼り付けることができます。

交換

上で話した置換の例を実証する。

どのように、非常に便利ではありませんが、ほぼすべての主流のエディタは、私たちの仕事やかなり多くを助けるために、定期的に学ぶ、によってサポートされています。

6. 最後に書く

最後に、上で言われたことをまとめると。

正規表現オンライン検証ツール。 https://regex101.com/

正規表現のグループ化と参照の使用に関するこの記事は、この、より関連する正規表現のグループ化と参照の内容を検索してくださいHouse of Scriptsの過去の記事または以下の関連記事を閲覧し続けるHouse of Scriptsを今後ともよろしくお願いします!。