我看到类似的问题,但我仍然无法找到问题。如果您发现类似的问题,如果您能在评论中向我发送链接,我将不胜感激。
我正在尝试匹配转义双引号(\"
)和单引号(\'
)的文本文件内容。原因是我必须用引号提取所有内容并将其粘贴到另一个文本文件中。这就是我的文本文件(需要比较)的样子:
<pre>
string0 = "Report: \n";
string1 = "File1 Name: \"Inferno\" \tFile2 Name: \"Gollum\"";
string2 = "Similarities: \'parameter1\' \t \'parameter3\' \t \'parameter4\'";
string3 = "Differences: \'parameter2\'";
</pre>
所以我需要一个可以在Java(Java的模式类)中使用的正则表达式,它可以匹配这些转义单引号和双引号字符。有什么建议?感谢。
如果需要进一步说明,请与我们联系。
答案 0 :(得分:1)
尝试
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuotesPattern {
static Pattern DOUBLE_QUOTES = Pattern.compile("\\\"(.+?)\\\"");
static Pattern SINGLE_QUOTES = Pattern.compile("\\\'(.+?)\\\'");
public static void main(String[] args) {
String string0 = "Report: \n";
String string1 = "File1 Name: \"Inferno\" \tFile2 Name: \"Gollum\"";
String string2 = "Similarities: \'parameter1\' \t \'parameter3\' \t \'parameter4\'";
String string3 = "Differences: \'parameter2\'";
printValues(string0);
printValues(string1);
printValues(string2);
printValues(string3);
}
private static void printValues(String string) {
Matcher doubleQuotesMather = DOUBLE_QUOTES.matcher(string);
while(doubleQuotesMather.find()) {
System.out.println(doubleQuotesMather.group(1));
}
Matcher singleQuotesMatcher = SINGLE_QUOTES.matcher(string);
while(singleQuotesMatcher.find()) {
System.out.println(singleQuotesMatcher.group(1));
}
}
}
这里的想法是双引号(&#34;)和斜杠()可以使用斜杠()进行转义。所以如果你想逃脱并匹配\&#34;你可以在每个字符前面放一个斜杠()来制作\\&#34;。同样对于\'#它变成了\\&#39;。如果要将两者结合到一个正则表达式,可以使用管道(|)运算符。
答案 1 :(得分:0)
匹配报价:
Pattern,compile( "\"" );
匹配撇号:
Pattern.compile( "'" );
撇号的反斜杠逃避是没有意义的:它仍然是一个简单的撇号。
也许在Java中引用一点点游览,如果你有文本:He said, "Let's go!"
,它的Java表示为文字
"He said, \"Let's go!\""
如果此字符序列存储在String对象中,则可以使用上面给出的正则表达式匹配引号和撇号。 String不包含反斜杠字符。
答案 2 :(得分:-1)
您的大部分案例都可以与:
匹配 "((\\\".*?\\\")|(\\\'.*?\\\'))"
表示匹配\&#34;任何文字,然后\&#34;。不情愿的资格赛。*?将在下一个转义报价之前停止。它将匹配单引号或双引号。
只需使用find,然后使用group(1)获取文本(包括转义和引号)。
它不能正确匹配的是另一个转义引用字符串(双引号)中的一个转义引用字符串(单引号)。但也许这不是你的必要案例。