Java Regex matchs()返回false但在浏览器中有效

时间:2014-05-05 17:42:00

标签: java regex

嗨我有正则表达式

(https?:\/\/)?(www\.)?(youtu\.be\/|youtube\.com\/(watch\?(.*&)?v=|(embed|v)\/))([^\?&"'>]+)

当我在浏览器中对http://youtu.be/QlgDPA9o21A运行时,它匹配但是 不是在java

这是代码

Pattern pattern = Pattern.compile("(https?:\\/\\/)?(www/.)?(youtu\\.be\\/|youtube\\.com\\/(watch\\?(.*&)?v=|(embed|v)\\/))([^\\?&\"'>]+)");
    Matcher matcher = pattern.matcher(url);

    if (matcher.matches() && matcher.groupCount() == 7) {
        return matcher.group(7);
    } else {
        return null;
    }

1 个答案:

答案 0 :(得分:1)

在Java中,您无需转义每个正斜杠。

就像你正在做的那样\\/应该只是/

您的模式将是:

Pattern pattern = Pattern.compile("(https?://)?(www\\.)?(youtu\\.be/|youtube\\.com/(watch\\?(.*&)?v=|(embed|v)/))([^\\?&\"'>]+)");