モジュールのレッスン (3/4)
ワイルドカード: ドット「.」
正規表現の ドット . は ワイルドカード です。任意の単一のカードと一致します。
文字\u2026 ただし、重要な例外が 1 つあります。* とは一致しません。
改行 (\n)。
Pattern: c.t
Sample: cat cot cut c@t c\nt
^^^ ^^^ ^^^ ^^^3 文字: c、任意の文字、t。間に改行がないため、c\nt
は一致しません (デフォルト)。
ドットは非常に便利ですが危険でもあります。懲りずに使用すると
意図した以上にキャプチャします。モジュール 2 の量指定子と組み合わせる
(.*、.+?) これは、「私のやり方では機能しない」パターンの 90% の原因です。
予想される」。
s フラグ: "dotAll"
s フラグ (dotAll または single-line とも呼ばれます) を使用すると、ドットが一致します
すべて 文字 (改行を含む)。複数のブロックにまたがるブロックを抽出するのに便利です
複数行。
Pattern: <p>.*</p>
Flag: gs
Sample: <p>prima\nseconda</p>
^^^^^^^^^^^^^^^^^^^^^ドットワイルドカードの制限と動作
ドット . は強力なワイルドカードですが、デフォルトでは 改行文字と一致しません (\\n)。ドットを改行を含むすべてのものと完全に一致させたい場合は、s (dotAll) フラグを有効にする必要があります。ドットを量指定子 (.*) と組み合わせる場合は、テキストを大量に消費する傾向がある (貪欲な動作) ため、注意してください。
試してみてください
括弧で区切られた文字の 3 つ組をすべて検索します。例: `(abc)`、`(xyz)`。内側の 3 文字にはワイルドカードを使用します。
ヒントを表示
3 つの任意の文字を表す 3 つのドット。括弧はメタ文字です。\\ でエスケープする必要があります。
3 回の試行後に解決策が利用可能になります
復習演習
`[INIZIO]` と `[FINE]` の間のブロックを抽出します。ブロックは複数行にまたがることもできます。ドットが改行にも一致するように `s` フラグと、量指定子の 'lazy' バージョン (`.*?`、モジュール 2) が必要になります。
ヒントを表示
s フラグがないと、ドットは行末で停止します。これを追加します。形式 .*? (lazy) 最初の [FINE] で試合を停止します。
3 回の試行後に解決策が利用可能になります
追加の課題
Find all 3-character sequences starting with `c` and ending with `t` (e.g. `cat`, `cot`, `c-t`).
ヒントを表示
パターンではドット「.」が使用されます。ワイルドカードの中間文字を表します。
3 回の試行後に解決策が利用可能になります