这适用于普通字符串文字(" hello")。
"([^"]*)"
但是我也希望我的正则表达式与#34; hell \" o"等文字相匹配。 这是我能够提出的,但它不起作用。
("(?=(\\")*)[^"]*")
在这里,我试图展望< \">。
答案 0 :(得分:1)
怎么样
Pattern.compile("\"((\\\\\"|[^\"])*)\"")//
^^ - to match " literal
^^^^ - to match \ literal
^^^^^^ - will match \" literal
或
Pattern.compile("\"((?:\\\\\"|[^\"])*)\"")//
如果您不想添加更多捕获组。
此正则表达式接受\"
或引号之间的任何非"
。
演示:
String input = "ab \"cd\" ef \"gh \\\"ij\"";
Matcher m = Pattern.compile("\"((?:\\\\\"|[^\"])*)\"").matcher(input);
while (m.find())
System.out.println(m.group(1));
输出:
cd
gh \"ij
答案 1 :(得分:0)
使用此方法:
"((?:[^"\\\\]*|\\\\.)*)"
[^"\\\\]*
现在也不再匹配\
了。但是在另一个轮换中,你可以匹配任何转义字符。
答案 2 :(得分:0)
试试这个:
Pattern pattern = Pattern.compile("((?:\\\"|[^\"])*)");
\\\"
匹配\"
或
[^\"]
按"