您要匹配的“字符”为:
"[/\\]"
先为字符串复制反斜杠,然后再为正则表达式复制。
当您需要在也使用反斜杠转义字符串的语言中使用反斜杠时,这可能是最讨厌的正则表达式。
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"); }}它输出:
'嗨/你好/再见/':是 'Hi Hello Bye ':是 'Hi Hello / Bye ':是 'HiHelloBye':否



