如何在正则表达式中表示双引号字符(“)?

时间:2013-05-26 17:02:34

标签: java regex char

我需要使用正则表达式来检查字符串是否以双引号字符(")开头,并以双引号字符结尾。

问题是我无法使用双引号字符,导致它感到困惑。有没有其他方法可以在正则表达式中或在字符串中表示双引号字符"

String s = """;    // ?

2 个答案:

答案 0 :(得分:22)

首先,双引号字符在正则表达式中并不特别 - 它只是另一个字符,因此它不需要从正则表达式的角度转义

但是,因为java使用双引号来分隔字符串常量,如果要在java中创建一个带有双引号的字符串,则必须将它们转义。

此代码将测试您的String是否匹配:

if (str.matches("\".*\"")) {
    // this string starts and end with a double quote
}

请注意,您不需要在正则表达式中添加输入标记的开始和结束(^$),因为matches()要求整个输入匹配以返回是 - ^$是隐含的。

答案 1 :(得分:9)

你需要在“。\"

之前使用反斜杠

从文档here中您可以看到

  

以反斜杠(\)开头的字符是转义序列并且具有   对编译器有特殊意义。

和“(双引号)是一个escacpe序列

当在print语句中遇到转义序列时,编译器会相应地解释它。例如,如果要在引号内放置引号,则必须在内部引号上使用转义序列\“。打印句子

  

她说“你好!”对我来说。

你会写

  

System.out.println(“她说”“你好!”给我。“);