|
193 | 193 | シンボル `+` は直前の文字が 1 個以上続くパターンにマッチします。
|
194 | 194 | 例えば `c.+t` という正規表現は小文字の `c` の後に
|
195 | 195 | 任意の 1 文字以上が続き、さらに `t` が続くことを意味します。
|
| 196 | +この `t` は、その文における最後の `t` がマッチします。 |
196 | 197 |
|
197 | 198 | <pre>
|
198 | 199 | "c.+t" => The fat <a href="#learn-regex"><strong>cat sat on the mat</strong></a>.
|
|
220 | 221 | [正規表現の動作確認をする](https://regex101.com/r/kPpO2x/1)
|
221 | 222 |
|
222 | 223 | ## 2.4 括弧
|
| 224 | +この`t`は、その文における最後の`t`であることが明確である必要があります。 |
223 | 225 |
|
224 | 226 | 正規表現における括弧は数量子とも呼ばれますが、文字列がいくつ現れるかを示すために使用されます。
|
225 | 227 | 例えば、`[0-9]{2,3}` という正規表現は 2 桁以上 3 桁以下の数字
|
|
359 | 361 |
|
360 | 362 | ## 4. 前後参照
|
361 | 363 |
|
362 |
| -しばしば前後参照とも呼ばれる先読みと後読みは **非キャプチャグループ** |
| 364 | +先読みと後読み(前後参照とも呼ばれます)は **非キャプチャグループ** |
363 | 365 | (パターンのマッチングはするがマッチングリストには含まれない)という
|
364 | 366 | 特殊な扱いがなされる機能です。
|
365 | 367 | 前後参照はあるパターンが別のあるパターンよりも先行または後続して現れることを示すために使用されます。
|
|
382 | 384 | 肯定的な先読みを定義するには括弧を使用します。
|
383 | 385 | その括弧の中で疑問符と等号を合わせて `(?=...)` のようにします。
|
384 | 386 | 先読みのパターンは括弧の中の等号の後に記述します。
|
385 |
| -例えば `[T|t]he(?=\sfat)` という正規表現は小文字の `t` か大文字の `T` のどちらかの後に `h`, `e` が続きます。 |
| 387 | +例えば `(T|t)he(?=\sfat)` という正規表現は小文字の `t` か大文字の `T` のどちらかの後に `h`, `e` が続きます。 |
386 | 388 | 括弧内で肯定的な先読みを定義していますが、これは `The` または `the` の後に
|
387 | 389 | `fat` が続くことを表しています。
|
388 | 390 |
|
389 | 391 | <pre>
|
390 |
| -"[T|t]he(?=\sfat)" => <a href="#learn-regex"><strong>The</strong></a> fat cat sat on the mat. |
| 392 | +"(T|t)he(?=\sfat)" => <a href="#learn-regex"><strong>The</strong></a> fat cat sat on the mat. |
391 | 393 | </pre>
|
392 | 394 |
|
393 | 395 | [正規表現の動作確認をする](https://regex101.com/r/IDDARt/1)
|
|
397 | 399 | 否定的な先読みはあるパターンが後続しない全てのマッチング文字列を取得するために使用します。
|
398 | 400 | 否定的な先読みは肯定的な先読みと同じように定義しますが、 `=` の代わりに
|
399 | 401 | `!` を使うところが唯一の違いで、`(?!...)` と記述します。
|
400 |
| -次の正規表現 `[T|t]he(?!\sfat)` について考えてみます。 |
| 402 | +次の正規表現 `(T|t)he(?!\sfat)` について考えてみます。 |
401 | 403 | これはスペースを挟んで `fat` が後続することがない全ての `The` または `the` を得ることができます。
|
402 | 404 |
|
403 | 405 | <pre>
|
404 |
| -"[T|t]he(?!\sfat)" => The fat cat sat on <a href="#learn-regex"><strong>the</strong></a> mat. |
| 406 | +"(T|t)he(?!\sfat)" => The fat cat sat on <a href="#learn-regex"><strong>the</strong></a> mat. |
405 | 407 | </pre>
|
406 | 408 |
|
407 | 409 | [正規表現の動作確認をする](https://regex101.com/r/V32Npg/1)
|
|
410 | 412 |
|
411 | 413 | 肯定的な後読みは特定のパターンが先行するような文字列を得るために使用します。
|
412 | 414 | 定義の仕方は `(?<=...)` とします。
|
413 |
| -例えば `(?<=[T|t]he\s)(fat|mat)` という正規表現は |
| 415 | +例えば `(?<=(T|t)he\s)(fat|mat)` という正規表現は |
414 | 416 | `The` または `the` の後に続く全ての `fat` または `mat` が取得できます。
|
415 | 417 |
|
416 | 418 | <pre>
|
417 |
| -"(?<=[T|t]he\s)(fat|mat)" => The <a href="#learn-regex"><strong>fat</strong></a> cat sat on the <a href="#learn-regex"><strong>mat</strong></a>. |
| 419 | +"(?<=(T|t)he\s)(fat|mat)" => The <a href="#learn-regex"><strong>fat</strong></a> cat sat on the <a href="#learn-regex"><strong>mat</strong></a>. |
418 | 420 | </pre>
|
419 | 421 |
|
420 | 422 | [正規表現の動作確認をする](https://regex101.com/r/avH165/1)
|
|
426 | 428 | 例えば `(?<!(T|t)he\s)(cat)` は `The` または `the` に続いていない全ての `cat` が取得できます。
|
427 | 429 |
|
428 | 430 | <pre>
|
429 |
| -"(?<![T|t]he\s)(cat)" => The cat sat on <a href="#learn-regex"><strong>cat</strong></a>. |
| 431 | +"(?<!(T|t)he\s)(cat)" => The cat sat on <a href="#learn-regex"><strong>cat</strong></a>. |
430 | 432 | </pre>
|
431 | 433 |
|
432 | 434 | [正規表現の動作確認をする](https://regex101.com/r/8Efx5G/1)
|
|
466 | 468 | 修飾子 `g` はグローバル検索(最初のマッチ列を検索する代わりに全マッチ列を検索する)を
|
467 | 469 | 行うために使用します。
|
468 | 470 | 例えば `/.(at)/g` という正規表現は、改行を除く任意の文字列の後に
|
469 |
| -小文字の `a`, `t` が続きます。正規表現の最後にフラグ `g` を渡すことで |
470 |
| -入力文字列内の全マッチ列を検索するようにしています。 |
| 471 | +小文字の `a`, `t` が続きます。正規表現の最後にフラグ `g` を渡すことで、 |
| 472 | +最初のマッチだけではなく(これがデフォルトの動作です)、入力文字列内の全マッチ列を検索するようにしています。 |
471 | 473 |
|
472 | 474 | <pre>
|
473 | 475 | "/.(at)/" => The <a href="#learn-regex"><strong>fat</strong></a> cat sat on the mat.
|
|
0 commit comments