首先,您需要
在旧的regex中插入和额外的反斜杠foreach反斜杠,否则Java会认为您在字符串中转义了其他一些特殊字符,而您没有这样做。https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w]*(?:['"][^<>]*>|<\/a>))[?=&+%\w]*接下来,当您编译模式时,需要添加
CASE_INSENSITIVE标志。这是一个例子:
String pattern = "https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w]*(?:['"][^<>]*>|<\/a>))[?=&+%\w]*";Pattern compiledPattern = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);Matcher matcher = compiledPattern.matcher(link);while(matcher.find()) { System.out.println(matcher.group());}


