为什么java正则表达式中匹配一个反斜杠要用四个反斜杠?
根据 Java Language Specification 的要求,Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。
先由java解释器解释字符串,然后再由正则表达式解释器解释正则表达式
String pattern = "a\\\\b";
首先被java解释器解释为“a\b”(第一个和第三个\代表转义,此时正则表达式受到保护,不被解释),再被正则解释器解释为"a\b"。即java中由4个\表示一个\。也就是他文中所说的java正则表达式被解释两次。
其他语言应该是a\\b
,这里使用两个反斜线,表示正则表达式受到保护这句话没有看懂,我的疑问在这里。
回答:
java字符串表达式中,\
是特殊字符,要输出则需要"\\"
来表示
正则里如果需要匹配\
,不考虑字符串因素,同样因为其也是正则里的特殊字符,需要\\
来表示,
因此java里要用字符串表示正则里的一个反斜杠则需要四个反斜杠 "\\\\"
来表示正则里的\\
回答:
\
有特殊的用途: 转义字符, 需要匹配\, 就需要对其进行转义就是\\
就相当于一个\
, 因此\b
要写为\\b
, 这个是java的特殊的一点, 他的规则就是这样. 其他的语言比如JS 就不需要这样,详细可以参考我的这篇文章:
Java 的正则表达式与爬虫
回答:
正则表达式的斜杠需要用 \\
来表示。但正则表达式是通过字符串来生成的,字符表示一个斜杠需要 \\
,那么表示 \\
需要用 \\\\
。
以上是 为什么java正则表达式中匹配一个反斜杠要用四个反斜杠? 的全部内容, 来源链接: utcz.com/p/945091.html