嗨,我有一个正则表达式
(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/