メインコンテンツにスキップ
モジュール 1 · レッスン 3 / 4コース内の 3/32~8 min
モジュールのレッスン (3/4)

ワイルドカード: ドット「.」

正規表現の ドット . は ワイルドカード です。任意の単一のカードと一致します。 文字\u2026 ただし、重要な例外が 1 つあります。* とは一致しません。 改行 (\n)。

Code
Pattern: c.t
Sample:  cat cot cut c@t c\nt
         ^^^ ^^^ ^^^ ^^^

3 文字: c、任意の文字、t。間に改行がないため、c\nt は一致しません (デフォルト)。

ドットは非常に便利ですが危険でもあります。懲りずに使用すると 意図した以上にキャプチャします。モジュール 2 の量指定子と組み合わせる (.*、.+?) これは、「私のやり方では機能しない」パターンの 90% の原因です。 予想される」。

s フラグ: "dotAll"

s フラグ (dotAll または single-line とも呼ばれます) を使用すると、ドットが一致します すべて 文字 (改行を含む)。複数のブロックにまたがるブロックを抽出するのに便利です 複数行。

Code
Pattern: <p>.*</p>
Flag:    gs
Sample:  <p>prima\nseconda</p>
         ^^^^^^^^^^^^^^^^^^^^^

ドットワイルドカードの制限と動作

ドット . は強力なワイルドカードですが、デフォルトでは 改行文字と一致しません (\\n)。ドットを改行を含むすべてのものと完全に一致させたい場合は、s (dotAll) フラグを有効にする必要があります。ドットを量指定子 (.*) と組み合わせる場合は、テキストを大量に消費する傾向がある (貪欲な動作) ため、注意してください。

試してみてください

運動#regex.m1.l3.e1
試行回数: 0読み込み中…

括弧で区切られた文字の 3 つ組をすべて検索します。例: `(abc)`、`(xyz)`。内側の 3 文字にはワイルドカードを使用します。

エディターを読み込み中…
ヒントを表示

3 つの任意の文字を表す 3 つのドット。括弧はメタ文字です。\\ でエスケープする必要があります。

3 回の試行後に解決策が利用可能になります

復習演習

運動#regex.m1.l3.e2
試行回数: 0読み込み中…

`[INIZIO]` と `[FINE]` の間のブロックを抽出します。ブロックは複数行にまたがることもできます。ドットが改行にも一致するように `s` フラグと、量指定子の 'lazy' バージョン (`.*?`、モジュール 2) が必要になります。

エディターを読み込み中…
ヒントを表示

s フラグがないと、ドットは行末で停止します。これを追加します。形式 .*? (lazy) 最初の [FINE] で試合を停止します。

3 回の試行後に解決策が利用可能になります

追加の課題

運動#regex.m1.l3.e3
試行回数: 0読み込み中…

Find all 3-character sequences starting with `c` and ending with `t` (e.g. `cat`, `cot`, `c-t`).

エディターを読み込み中…
ヒントを表示

パターンではドット「.」が使用されます。ワイルドカードの中間文字を表します。

3 回の試行後に解決策が利用可能になります