Psh*_*emo 6

看起来你试图以逃避它的方式逃脱|"\\|".但是|和之间的区别"

  • | 是正则表达式引擎中的元字符(它代表OR运算符)
  • " 是字符串文字中Java语言的元字符(它表示字符串的开头/结尾)

要转义任何String元字符(例如"),您需要在其前面放置其他字符串元字符,负责转义为\1.因此,要创建的字符串,其中将包括"this is "quote"你需要把它写成

String s = "this is \"quote\"";
//                  ^^     ^^ these represent " literal, not end of string 
Run Code Online (Sandbox Code Playgroud)

如果我们想创建\文字(我们需要通过\在它之前放置另一个来逃避它),同样的想法被应用.例如,如果我们想要创建字符串表示,c:\foo\bar我们需要将其写为

String s = "c:\\foo\\bar";
//            ^^    ^^    these will represent \ literal
Run Code Online (Sandbox Code Playgroud)

因此,如您所见\,用于转义元字符(使它们成为简单的文字).
这个字是用Java语言字符串使用,但它也是在正则表达式引擎用来逃跑的元字符:
\,^,$,.,|,?,*,+,(,),[,{.

如果你想创建匹配[字符的正则表达式,你需要使用正则表达式,\[但是在Java中表示这个正则表达式的字符串需要写成

String leftBracketRegex = "\\[";
//                         ^^ - Remember what was said earlier? 
//                              To create \ literal in String we need to escape it
Run Code Online (Sandbox Code Playgroud)

所以拆就[我们就需要调用split("\\["),因为正则表达式表示[\[需要被写成"\\["Java编写.

因为"在正则表达式中不是特殊字符,但它在String中是特殊的,我们需要通过将其写为字符串文字来转义它

split("\"");
Run Code Online (Sandbox Code Playgroud)

1)\还用于创建其他字符行分隔符\n,制表符\t.它也可以用于创建Unicode字符等\uXXXX,其中XXXX是字符的索引以Unicode表以十六进制形式.