3

"Hello" のように、引用符で囲まれた文字列を指定すると、

次の正規表現は、二重引用符なしで文字列の一致を出力します。

/"([^"]+)"/

どのようにキャラクターを捉えているのか理解できません。これがキャプチャする必要があるのは、最初の二重引用符だけだと思います。この正規表現が言っているのは、二重引用符で始まり二重引用符で終わり、最初に 1 つ以上の二重引用符がある式を見つけることです。そして、先頭にある 1 つ以上の二重引用符をキャプチャします。ここの文字列を とどのように一致させるの[^"]+でしょうか?

4

1 に答える 1

8

この式[^"]+は、文字通り、二重引用符ではないすべての文字に一致することを意味します"。したがって、内部に配置すると()、最初の文字から次の文字までのすべての文字がキャプチャされます。これは、文字クラスの内部は、文字列の開始ではなく否定を意味するためです。つまり、文字通り、以外のものを意味します。""^[][][^"]"

それ()自体がキャプチャグループであり、正規表現は内部に存在する式のみをキャプチャします()。使用するプログラミング言語"Hello"によっては、式全体と一致する文字列全体/"([^"]+)"/を別の変数に記録する場合もありますが、その目的は()その内容をキャプチャすることです。

式の完全な内訳:

  • " -最初の文字通りの引用
  • ( -キャプチャを開始します
  • [^"]+までのすべての後続の文字(含まない)"
  • )-キャプチャグループを終了します
  • "-最終的なクロージングクォートリテラル
于 2013-01-19T14:16:21.983 に答える