正则表达式匹配字符串文字,包括转义序列

时间:2014-04-05 14:57:16

标签: java regex

这适用于普通字符串文字(" hello")。

"([^"]*)"

但是我也希望我的正则表达式与#34; hell \" o"等文字相匹配。 这是我能够提出的,但它不起作用。

("(?=(\\")*)[^"]*")

在这里,我试图展望< \">。

3 个答案:

答案 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("((?:\\\"|[^\"])*)");

\\\"匹配\"

[^\"]"

匹配任何内容