嗨我有正则表达式
(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;
}
答案 0 :(得分:1)
在Java中,您无需转义每个正斜杠。
就像你正在做的那样\\/
应该只是/
您的模式将是:
Pattern pattern = Pattern.compile("(https?://)?(www\\.)?(youtu\\.be/|youtube\\.com/(watch\\?(.*&)?v=|(embed|v)/))([^\\?&\"'>]+)");