①r'が何なのか
通常の文字列だと、バックスラッシュ(\)がエスケープシーケンスとして扱われますが、
「r」を文字列の前に着けると、その文字列は「raw文字列」となり、バックスラッシュがpython文字列としての特別扱いを受けません。
例:"\n" → python文字列の改行コード1文字として解釈されます。
r"\n" → '' と 'n' の二文字からなる文字列として解釈されます。正規表現上、asciiキャラクター0x0a(LF:改行)にマッチします。
②(=+)([^=]+)がどういう意味か
(=+)([^=]+)
=+
と [^=]+
のグループに分けられます。
1.1
=+
「=」の1回以上の繰り返しとマッチする。
マッチする例:
=
==
========
1.2
[^=]+
「=」以外の文字の1回以上の繰り返しとマッチする。
マッチする例:
3
あいう
123456
マッチしない例:
=
==
========
2.
括弧()
で囲むことにより、正規表現を部分的にグループ化できます。
(=+)([^=]+)
は以下のようになります。
==あいう
→ 「==」が第1グループ、「あいう」が第2グループ
あいう===えお
→ 「あいう」はマッチせず、「===」が第1グループ、「えお」が第2グループ
あいう==
→ 後半に=以外のものがないため、マッチするものがありません。
==
→ 後半に=以外のものがないため、マッチするものがありません。
③\1は何なのか
「\1」のような記法は、「\number特殊シーケンス」といって、グループが登場した後の文字列の部分にマッチさせるためのものです。
第1グループが最も最近マッチしたテキストと同じテキストにマッチすることを表します。
例:
===123===
・第1グループ===
・第2グループ123
となり、
最後の(123
の右にある)===
が第1グループの===
とマッチしているため、
===123===
が全体としてマッチします。
====abc=
→
・第1グループ=
(最後の=
に対応して直近でマッチする部分)
・第2グループ123
以上より
=abc=
がマッチする部分です。
下記サイトでいろいろ試してみるとわかりやすいと思います。
https://regex101.com/
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/22 08:35