为什么在Java正则表达式中需要两个斜杠来查找“+”符号?

2022-09-04 08:16:07

只是我不明白背后的全部含义。我明白,如果我想使用正则表达式找到它们,我需要转义任何特殊含义的字符。我还在某处读到,如果 Java 中的反斜杠位于 String 文本中,则需要对其进行转义。我的问题是,如果我“逃避”反斜杠,它不会失去意义吗?那么它就不能逃脱下面的加号符号了吗?

抛出一个错误(但它不应该工作,因为这就是你转义这些特殊字符的方式吗?

replaceAll("\+\s", ""));

工程:

replaceAll("\\+\\s", ""));

希望这是有道理的。我只是试图理解为什么我需要这些额外的斜杠背后的功能,当我读过的正则表达式教程没有提到它们时。像这样的东西应该找到加号。"\+"


答案 1

这里有两个“逃生”。第一个反斜杠是转义 Java 语言的第二个反斜杠,以创建实际的反斜杠字符。反斜杠字符是正则表达式引擎转义或 for 解释的字符。这就是为什么你需要两个反斜杠 - 一个用于Java,一个用于正则表达式引擎。只有一个反斜杠,Java 报告和作为非法转义字符 - 不是用于正则表达式,而是用于 Java 语言中的实际字符。+s\s\+


答案 2

额外斜杠后面的 Funda 是字符串的转义,第一斜杠 '\' 是正则表达式的转义。