正则表达式在双引号之间找到字符串

时间:2017-02-01 12:38:18

标签: java regex

我正在寻找正则表达式来返回给定字符串中双引号之间的值。 我在java代码下面使用

Pattern p = Pattern.compile("\"([^\"]*)\"");

Matcher m = p.matcher(line);
int findline = 0;

while (m.find()) {
System.out.println(m.group(0));
}

上述代码适用于普通文本,但不适用于下面的字符串

String originalString ="value = value.replaceAll(", ", ",").replaceAll(",", "\",\"").replaceAll("\\[","\""); ";

在javafile上它就像

String originalString = "value = value.replaceAll(\", \", \",\").replaceAll(\",\", \"\\\",\\\"\").replaceAll(\"\\\\[\",\"\\\"\"); ";

现在我要找的是双引号之间的数据是否包含

\ or \" or \\

然后忽略它应该返回的所有内容。

在双引号包含转义字符之间休息所有值,所以忽略该内容。

1 个答案:

答案 0 :(得分:0)

你想吃''在\ perl

之后,它就像是这样的一个字符
if( $line =~ /(?:(?:[\\]?+.)|.)*?"((([\\]?+.)|.)*?)"/ ){
    print $1;
}

如果java你将需要保护每个\和"

Pattern.compile("(?:(?:[\\\\]?+.)|.)*?\"((([\\\\]?+.)|.)*?)\"");

如果java模式没有尝试使用JRegex。