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

Gig*_*ala 11 java regex char

我需要使用正则表达式,检查一个字符串以a开头的双引号字符("),并用结束双引号太多字符.

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

String s = """;    // ?
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 24

首先,双引号字符在正则表达式中并不特别 - 它只是另一个字符,所以它不需要从正则表达式的角度逃避.

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

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

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

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

  • 一个有趣的匹配引号内的内容,我经常用于 xml 标签中的属性是`"[^"]*"`(或者,作为转义的 java 字符串,`"\"[^\"]*\""`) . 不可能流血;) (2认同)

sti*_*ike 9

你需要在".之前使用反斜杠 \"

这里的文档你可以看到

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

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

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

她说"你好!" 对我来说.

你会写的

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