正则表达式匹配JAVA中的斜杠

him*_*056 19 java regex

我希望在特定字符串中匹配正斜杠/或反斜杠\,例如:
1.2 Hi/Hello/Bye/
. Hi\Hello\Bye\
3. Hi\Hello/Bye\
4. HiHelloBye
在给定字符串中,只有最后一条记录不匹配,因为它不包含任何一个/\.

我在用什么

if (strFile.matches(".*//.*"))
{
    //String Matches.
}
else
{
    //Does not match.
}
Run Code Online (Sandbox Code Playgroud)

/仅适用于正斜杠.我不知道如何为斜杠(for ORcondition)编写正则表达式.

pax*_*blo 31

你想要匹配的"角色"是:

"[/\\\\]"
Run Code Online (Sandbox Code Playgroud)

首先为字符串复制反斜杠然后再为正则表达式复制反斜杠.

当你需要在使用反斜杠转义字符串的语言中使用反斜杠时,这可能是最糟糕的正则表达式.

Java编译器"\\\\"在源代码中看到字符串并实际将其转换为"\\"(因为它\用作转义字符).

然后正则表达式会看到它,"\\"并且因为它也\用作转义字符,所以将它视为单个\字符.

作为柳岩在评论中指出,你可以摆脱一个使用以下的一个反斜杠的水平(正则表达式之一):

".*[/\\x5c].*"
".*[/\\u005c].*"
Run Code Online (Sandbox Code Playgroud)

这可能会使它更具可读性.

完成所有减少后,您已指定一个由两个斜杠组成的字符类,如果所讨论的字符与其中任何一个匹配,则返回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");
    }
}
Run Code Online (Sandbox Code Playgroud)

它输出:

    'Hi/Hello/Bye/': true
    'Hi\Hello\Bye\': true
    'Hi\Hello/Bye\': true
    'HiHelloBye': false