-1

次の正規表現では:

[a-zA-Z_]?\"(\\.|[^\\"])*\"

とは\"(\\.|[^\\"])*\"どういう意味ですか?

4

2 に答える 2

1

説明は次のとおりです。

[              # start character class
  a-zA-Z         # case insensitive character match
  _              # underscores are allowed too
]              # end character class
?              # match zero or one time
(              # start group
  \\.            # dot character
  |              # OR
  [              # start character class
    ^              # match any character
    \\"            # except double quote
  ]              # end character class
)              # end group
*              # match zero or more occurrences 
于 2012-06-20T06:05:02.993 に答える
0

Javaに似ているので分解

\"(\\.|[^\\"])*\" 

我々が得る:

  • \"文字通りの引用"
  • (グループを開始
  • \\.リテラルドット
  • |論理「または」
  • [キャラクタークラス開始
  • ^否定
  • \\"不必要にエスケープされた引用符 - と同等\"- にも 3 つまたは 1 つのバックスラッシュが必要なので、そのままでは構文エラーです。
  • ]エンドキャラクタークラス
  • )エンドグループ
  • *任意の数
  • \"文字通りの引用"

全体として、これは次のことを意味します: 引用符の間に任意の数のドット (ゼロのドットを含む)

文字クラスは貪欲にならないための試みですが、これを行う簡単な方法があります - 「貪欲でない」 operator を使用するだけ*?です。つまり、次のように置き換えることができます。

\"\\.*?\"
于 2012-06-20T06:02:49.937 に答える