我需要使用正则表达式来检查一个字符串是否以双引号字符 ("
) 开头并以双引号字符结束。
问题是我不能直接使用双引号字符,因为它会产生歧义。有没有其他方法在正则表达式中或一般字符串中表示双引号字符 "
?
String s = """; // ?
首先,在正则表达式中,双引号字符并没有什么特殊的 - 它只是另一个字符,因此它不需要转义,从正则表达式的角度来看。
但是,因为Java使用双引号来分隔字符串常量,所以如果您想在Java中创建一个带有双引号的字符串,就必须对它们进行转义。
以下代码将测试您的字符串是否匹配:
if (str.matches("\".*\"")) {
// this string starts and end with a double quote
}
请注意,您不需要在正则表达式中添加输入标记的开始和结束(^
和$
),因为matches()
要求整个输入都匹配才返回true - ^
和$
是隐含的。"[^"]*"
(或者作为转义后的Java字符串,"\"[^\"]*\""
)。无法被破坏 ;) - Nyerguds你需要在句号前使用反斜杠 "\"。例如:\"
从这里的文档可以看到:
一个紧随反斜杠后面的字符( \ )是转义序列,对编译器有特殊意义。
而双引号 " 是一个转义序列。
当在print语句中遇到转义序列时,编译器会相应地解释它。例如,如果您想在引号之间放置引号,则必须在内部引号上使用转义序列 \"。 要打印以下句子:
她对我说“你好!”。
您应该写成:
System.out.println("她对我说\"你好!\"")。