質問: 以下のような文字列を正規表現を使ってマッチさせます。 まず、検索ボックスに 「".+"」と入力します。 すると一番左端のダブルクォーテーションから、右端のダブルクォーテーションまで全てが選択されます。解説によると量指定子はデフォルトだとなるべく長い文字にマッチされるとのことです。 "apple", "apples", "pineapple" で、一番短い文字列でマッチさせたい場合は量指定子の後に「?」をつけてやるといいようです。「".+?"」 実行してみると添付画像のように各々の文字列が別個に選択されています。 ![画像の説明をここに入力](https://i.stack.imgur.com/1CTRz.png) 初心者の素朴な疑問なのですがダブルクォーテーションで囲んだ文字列と文字列の間のカンマはマッチしないのでしょうか? 「".+?"」だとカンマは任意の一文字として該当しないのですか? apple「", "」apples「 ","」pineapple 学習はじめたばかりの初心者です。少し混乱しています。どなかた分かりやすく教えてください。よろしくお願いいたします。 最短マッチということで["apple"]、["apples"]、["pineapple"]よりもダブルクォーテーションで囲まれた「[", "][", "]こちらの方が短いのではないかと素人目に思えてしまいます。
回答: > > ダブルクォーテーションで囲んだ文字列と文字列の間のカンマはマッチしないのでしょうか? > > > 正規表現エンジンそのものとしてはマッチします。単に正規表現エンジンを呼び出しているアプリケーション側の挙動にすぎません。 一般的に複数回マッチを行う場合、無限にマッチし続けることを避けるため、一度マッチすると、マッチした終端を開始位置に指定します。 今回の場合、 ``` |"apple", "apples", "pineapple" ``` ↓ `|`の位置から開始し`"apple"`にマッチ。 ↓ ``` "apple"|, "apples", "pineapple" ``` ↓ `|`の位置から開始し`"apples"`にマッチ。 という挙動です。