java - 如何将正则表达式匹配推送到java中的数组?

标签 java regex

我目前有一个字符串,我想使用其中的某些部分。对于这些部分,我想做各种事情,例如将它们推送到数组或在文本区域中显示它们。

拳头我尝试分割方法。它删除我的正则表达式匹配并打印字符串的其他部分。我想删除其他部分并打印正则表达式匹配。

我该怎么做?

例如:
像这样的 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

如果您想获得与正则表达式匹配的内容,则需要使用PatternMatcher:

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/

相关文章:

java - NullPointerException:尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)'

java - 添加您自己的词汇 [Nuxeo]

java - Android 应用程序崩溃 NullPointerException

c# - 匹配一组空的(或空格填充的)括号

regex - 匹配正则表达式中的单词,但前提是第一个字母是大写

javascript - 正则表达式:必须存在的组,但事先未知它将在哪里

java - RestEasy @Path 正则表达式问题

java - 两个带有线程的矩阵的乘积

java - GWT RegExp - 多个匹配

java - 扩展 LinkedHashMap 时出错