您要匹配的“角色”将是:
"[/\\\\]"
首先为字符串复制反斜杠,然后再为正则表达式复制反斜杠。
当您需要在也使用反斜杠转义字符串的语言中使用反斜杠时,这可能是最讨厌的正则表达式。
Java 编译器看到"\\\\"
源代码中的字符串并将其实际转换为"\\"
(因为它\
用作转义字符)。
然后正则表达式看到这一点,"\\"
并且因为它也\
用作转义字符,所以会将其视为单个\
字符。
正如柳岩在评论中指出的那样,您可以使用以下方法之一摆脱一级反斜杠(正则表达式):
".*[/\\x5c].*"
".*[/\\u005c].*"
这可能会使它更具可读性。
完成所有缩减后,您已指定由两个斜杠组成的字符类,如果所讨论的字符与其中任何一个匹配,则返回 true。
以下代码显示了这一点:
public class testprog {
public static void checkString (String s) {
boolean yes = s.matches(".*[/\\\\].*");
System.out.println ("'" + s + "': " + yes);
}
public static void main (String s[]) {
checkString ("Hi/Hello/Bye/");
checkString ("Hi\\Hello\\Bye\\");
checkString ("Hi\\Hello/Bye\\");
checkString ("HiHelloBye");
}
}
它输出:
'嗨/你好/再见/':真
'嗨\你好\再见\':真
'嗨\你好/再见\':真
“你好再见”:假