14

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

问题是我不能使用双引号字符,因为它会混淆。有没有其他方法可以在正则表达式或一般字符串中表示双引号字符?"

String s = """;    // ?
4

2 回答 2

31

首先,双引号字符在 regex 中没有什么特别之处——它只是另一个字符,所以从 regex 的角度来看它不需要转义。

但是,因为 Java 使用双引号来分隔String 常量,所以如果要在 Java 中创建带有双引号的字符串,则必须对其进行转义。

此代码将测试您的字符串是否匹配:

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

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

于 2013-05-26T23:29:24.287 回答
11

你需要在“。”之前使用反斜杠\"

这里的文档中,您可以看到

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

和 " (双引号) 是一个转义序列

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

她说:“你好!” 大部头书。

你会写

System.out.println("她对我说\"你好!\"。");

于 2013-05-26T17:03:25.887 回答