私はこの質問を何度かここに返してきましたRegular expression that does not contain quote but can contain escaped quoteと応答を得ましたが、何とか私はそれをJavaで動作させることができません。可能なエスケープ文字の文字列の正規表現
基本的には、最初に有効な文字列と一致し、引用符で終わる正規表現を作成する必要があります。また、エスケープされていれば、その間に引用符を付けることができます。
以下のコードでは、基本的に3つの文字列をすべて一致させて印刷することができますが、できません。
正しい正規表現は何ですか?
おかげ
public static void main(String[] args) {
String[] arr = new String[]
{
"\"tuco\"",
"\"tuco \" ABC\"",
"\"tuco \" ABC \" DEF\""
};
Pattern pattern = Pattern.compile("\"(?:[^\"\\\\]+|\\\\.)*\"");
for (String str : arr) {
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.matches());
}
}
コードがあなたの説明と一致しません。 '' arr'の要素は、 '' tuco ''、' 'tuco" ABC "'、 '' tuco "ABC" DEF "'を含む文字列です - つまり、 – ruakh
@ ruakhのコメントに追加すると、引用符で囲まれたエスケープは '' tuco \\\ "ABC \\\" "'のようになります。 –
正規表現が有効な文字列と一致する必要があります。それを有効な文字列にします。基本的には、3つの式のすべてに対して出力を真にしたいのですが、 – Tuco