From 2ae967def75c0bf2c720992ca4b7a95c16f40581 Mon Sep 17 00:00:00 2001 From: ganariya Date: Sun, 15 May 2022 10:43:46 +0900 Subject: [PATCH] :memo: Fix and add Capturing Groups Translation --- translations/README-ja.md | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/translations/README-ja.md b/translations/README-ja.md index ef9a289..2977b50 100644 --- a/translations/README-ja.md +++ b/translations/README-ja.md @@ -69,7 +69,8 @@ - [プラス記号](#232-プラス記号) - [疑問符](#233-疑問符) - [括弧](#24-括弧) - - [文字グループ](#25-文字グループ) + - [キャプチャグループ](#25-キャプチャグループ) + - [非キャプチャグループ](#251-非キャプチャグループ) - [選言](#26-選言) - [特殊文字をエスケープする](#27-特殊文字をエスケープする) - [アンカー](#28-アンカー) @@ -271,14 +272,13 @@ [正規表現の動作確認をする](https://regex101.com/r/Sivu30/1) -## 2.5 文字グループ +## 2.5 キャプチャグループ -文字グループは括弧 `(...)` 内にパターンを記述してグループ分けをするために使用します。 -前述の通り、正規表現においては数量子を文字の後に置いた場合は -その直前の文字の繰り返しを意味します。しかし、文字グループの後に数量子を置いた場合は -文字グループ全体が繰り返すことを意味します。 +キャプチャグループは、括弧 `(...)` 内に書かれたサブパターンのグループです。 +前述の通り、正規表現においては数量子を文字の後に置いた場合は、その直前の文字の繰り返しを意味します。 +しかし、キャプチャグループの後に数量子を置いた場合は、キャプチャグループ全体の繰り返しを意味します。 例えば、 `(ab)*` という正規表現は "ab" という文字列の 0 個以上の繰り返しにマッチします。 -文字グループ内では選言 `|` も使用することができます。 +キャプチャグループ内では、メタ文字である選言 `|` も使用することができます。 例えば、`(c|g|p)ar` という正規表現は小文字の `c`, `g`, `p` のいずれかの後に `a` が続き、さらに `r` が続くことを意味します。 @@ -288,6 +288,25 @@ [正規表現の動作確認をする](https://regex101.com/r/tUxrBG/1) +キャプチャグループは親言語における利用のために、文字のマッチだけでなく、キャプチャも行うことに注意してください。 +ここで、親言語は Python や Javascriptなど、関数定義で正規表現を実装している言語であれば任意です。 + +### 2.5.1 非キャプチャグループ + +非キャプチャグループは、文字にマッチするがグループをキャプチャしないようなキャプチャグループのことです。 +非キャプチャグループは括弧内の `:` に続く `?` で示されます。 +例えば、 `(?:c|g|p)ar` という正規表現は `(c|g|p)ar` と同じ文字列にマッチする点で似ていますが、 +キャプチャグループを作りません。 + +
+"(?:c|g|p)ar" => The car is parked in the garage.
+
+ +[正規表現の動作確認をする](https://regex101.com/r/Rm7Me8/1) + +非キャプチャグループは、検索・置換機能で利用したり、他の種類の出力を生成するとき概観を維持しながらキャプチャグループを混合させる場合に便利です。 +[4. 前後参照](#4-前後参照) も参照してください。 + ## 2.6 選言 正規表現における縦棒 `|` は選言として使用されます。