次の正規表現では:
[a-zA-Z_]?\"(\\.|[^\\"])*\"
とは\"(\\.|[^\\"])*\"
どういう意味ですか?
説明は次のとおりです。
[ # 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
Javaに似ているので分解
\"(\\.|[^\\"])*\"
我々が得る:
\"
文字通りの引用"
(
グループを開始\\.
リテラルドット|
論理「または」[
キャラクタークラス開始^
否定\\"
不必要にエスケープされた引用符 - と同等\"
- にも 3 つまたは 1 つのバックスラッシュが必要なので、そのままでは構文エラーです。]
エンドキャラクタークラス)
エンドグループ*
任意の数\"
文字通りの引用"
全体として、これは次のことを意味します: 引用符の間に任意の数のドット (ゼロのドットを含む)
文字クラスは貪欲にならないための試みですが、これを行う簡単な方法があります - 「貪欲でない」 operator を使用するだけ*?
です。つまり、次のように置き換えることができます。
\"\\.*?\"