两者似乎都符合双引号。
我知道\*
匹配正则表达式中的字符*
,(http://www.digitalamit.com/article/regular_expression/2.phtml)
由于*
是一个特殊字符,反斜杠用于将其转义为正则表达式。
但双引号不是正则表达式的特殊字符。那为什么在双引号之前需要反斜杠。
在我的公司代码库中,他们使用Pattern.compile("\\\"")
答案 0 :(得分:0)
根据我的经验,我认为在双引号之前不需要反斜杠,在大多数情况下它没有反斜杠:
System.out.println(Pattern.compile("^\"$").asPredicate().test("\""));
结果是真的
System.out.println(Pattern.compile("^\\\"$").asPredicate().test("\""));
结果是真的
System.out.println(Pattern.compile("^\\\"$").asPredicate().test("\\\""));
结果是假的。所以,如果你想匹配“你需要在你的正则表达式中添加双反斜杠:
System.out.println(Pattern.compile("^\\\\\"$").asPredicate().test("\\\""));
结果是真的。
如果你构建一个regexp字符串,它需要在每个双引号之前添加反斜杠,除非你不能匹配反斜杠+双引号。