我目前有一个字符串,我想使用其中的某些部分。对于这些部分,我想做各种事情,例如将它们推送到数组或在文本区域中显示它们。
拳头我尝试分割方法。它删除我的正则表达式匹配并打印字符串的其他部分。我想删除其他部分并打印正则表达式匹配。
我该怎么做?
例如:
像这样的 YouTube 链接有很多
https://www.youtube.com/watch?v=qJuoXM7G322&list=PLRfAW_jVDn06M7qxHIwlowgLY3Io1pG6z&index=7
我只想使用此表达式获取简单的视频链接
"https:\\/\\/www.youtube.com\\/watch\\?v=.{11}"
当我使用此代码时:
String ytLink = linkArea.getText();
String regexp = "https:\\/\\/www.youtube.com\\/watch\\?v=.{11}";
String[] tokenVal;
tokenVal = ytLink.split(regexp);
System.out.println("Count of Links : "+tokenVal.length);
for (String t : tokenVal) {
System.out.println(t);
}
打印
"&list=PLRfAW_jVDn06M7qxHIwlowgLY3Io1pG6z&index=7"
我想输出如下:
"https://www.youtube.com/watch?v=SATL2mTfZO0"
最佳答案
"when I Right this code :"
您正在使用该正则表达式分割字符串,这不是完成该作业的正确工具。
它将示例字符串分为:
"" // The bit before the separator.
"https://www.youtube.com/watch?v=qJuoXM7G322" // The separator
"&list=PLRfAW_jVDn06M7qxHIwlowgLY3Io1pG6z&index=7" // The bit after the separator
但随后丢弃分隔符,因此您将返回一个包含以下内容的 2 元素数组:
"" // The bit before the separator.
"&list=PLRfAW_jVDn06M7qxHIwlowgLY3Io1pG6z&index=7" // The bit after the separator
如果您想获得与正则表达式匹配的内容,则需要使用Pattern
和Matcher
:
Pattern pattern = Pattern.compile("https:\\/\\/www.youtube.com\\/watch\\?v=.{11}");
Matcher matcher = pattern.matcher(ytLink);
if (matcher.find()) {
System.out.println(matcher.group());
}
(我并不完全相信正则表达式中转义的反斜杠;但是该模式对于原则来说并不重要)
关于java - 如何将正则表达式匹配推送到java中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33693562/