Max*_*ney 9 java regex escaping
只是我不明白背后的全部意义.我知道如果我想使用正则表达式找到它们,我需要逃避任何特殊含义字符.而且我还读到了某些地方,如果它在String文字中,你需要逃避Java中的反斜杠.我的问题是,如果我"逃避"反斜杠,它不会失去意义吗?那么它将无法逃脱以下加号?
引发错误(但不应该有效,因为这是你如何逃避这些特殊字符?):
replaceAll("\+\s", ""));
Run Code Online (Sandbox Code Playgroud)
作品:
replaceAll("\\+\\s", ""));
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.我只是想了解我为什么需要这些额外斜线的功能,因为我读过的正则表达式教程没有提到它们.这样的事情"\+"应该找到加号.
rge*_*man 18
这里有两个"逃亡".第一个反斜杠是为了逃避Java语言的第二个反斜杠,以创建一个实际的反斜杠字符.反斜杠字符是正则表达式引擎转义+或s解释的内容.这就是为什么你需要两个反斜杠 - 一个用于Java,一个用于正则表达式引擎.只有一个反斜杠,Java报告\s和\+非法转义字符 - 不是正则表达式,而是Java语言中的实际字符.