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

标签 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;
    }

最佳答案

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

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

您的模式将是:

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

关于Java Regex matches() 返回 false 但在浏览器中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23478451/

相关文章:

mysql在字符串表中搜索关键字

javascript - 如果超过 10 个,请移除

javascript - 需要只允许有效页码的正则表达式,例如 1、2、3、4-5,每个页码的最大长度为 3 位数字 (1-999)

javascript - 使用 JS 使用正则表达式验证用户输入时遇到问题

python regex 简单帮助 - 处理括号

java - Withings Web API 调用签名问题?

java - 使用java提取tar.gz错误

java - Play Framework 应用程序在第 6 行不断抛出空指针

java - 如何在持久化之前不设置 Id 的情况下使用新的实体对象?

java - com.google.api.client 库中的 NoSuchMethodError