レッスンに戻る

引用符付き文字列を探す

二重引用符 "..." 付き文字列を探す正規表現を作成する。

文字列はJavaScript文字列と同様にエスケープをサポートする必要がある。たとえば、引用符は \" として、改行は \n として、バックスラッシュ自体は \\ として挿入できる。

let str = "Just like \"here\".";

特に、エスケープした引用符 \" は文字列を終了しないことに注意してください。

したがって、途中でエスケープされた引用符を無視して、一重引用符から二重引用符まで検索する必要があります。

それはタスクの本質的な部分であり、そうでなければ些細なことになります。

照合する文字列の例

.. "test me" ..
.. "Say \"Hello\"!" ... (escaped quotes inside)
.. "\\" ..  (double backslash inside)
.. "\\ \"" ..  (double backslash and an escaped quote inside)

JavaScriptでは、文字列に直接渡すにはバックスラッシュを2倍にする必要があります。

let str = ' .. "test me" .. "Say \\"Hello\\"!" .. "\\\\ \\"" .. ';

// the in-memory string
alert(str); //  .. "test me" .. "Say \"Hello\"!" .. "\\ \"" ..

ソリューション: /"(\\.|[^"\\])*"/g.

ステップごと

  • 最初に開く引用符 " を探します。
  • 次に、バックスラッシュ \\ がある場合(特殊文字であるため、パターンで2倍にする必要があります)、その後に任意の文字(ドット)があれば問題ありません。
  • それ以外の場合、引用符(これは文字列の終わりを意味します)とバックスラッシュ(単独のバックスラッシュを防ぐために、バックスラッシュは他のシンボルと一緒にのみ使用されます)以外の任意の文字を取ります: [^"\\]
  • …そして最後の引用符までこれを続けます。

実行中

let regexp = /"(\\.|[^"\\])*"/g;
let str = ' .. "test me" .. "Say \\"Hello\\"!" .. "\\\\ \\"" .. ';

alert( str.match(regexp) ); // "test me","Say \"Hello\"!","\\ \""