java - RegEx 从字符串中提取第二个 URL

标签 java

我正在尝试像这样从 Stings 中提取第二个 url

 submitted by <a href="http://www.reddit.com/user/thecrappycoder"> thecrappycoder </a> <br /> <a href="http://blogs.msdn.com/b/bethmassi/archive/2015/02/25/understanding-net-2015.aspx">[link]</a> <a href="http://www.reddit.com/r/programming/comments/2x9o4o/understanding_net_2015/">[3 comments]</a>
 submitted by <a href="http://www.reddit.com/user/durdn"> durdn </a> <br /> <a href="https://www.youtube.com/watch?v=yG-UaBJXZ80">[link]</a> <a href="http://www.reddit.com/r/programming/comments/2x89le/hacking_with_andrew_and_brad_an_http2_client/">[1 comment]</a>

通过使用正则表达式。我试过了。

String regex = "\\(?\\b(http://|www[.])[-A-Za-z0-9+&amp;@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&amp;@#/%=~_()|]";        
Pattern p = Pattern.compile(regex);             
Matcher m = p.matcher(text);    
while(m.find()) {       
    String urlStr = m.group();  
    urlStr = urlStr.substring(1, 3);    
        links.add(urlStr);              
}

我也这样试过

System.out.println(("http://"+text.split("http://")[1]).split("")[0]);

不幸的是,我无法得到它。任何帮助,谢谢。

最佳答案

您可以通过简化的正则表达式模式采用相同的方法:

String text = "submitted by <a href=\"http://www.reddit.com/user/thecrappycoder\"> thecrappycoder </a> <br />" +
        " <a href=\"http://blogs.msdn.com/b/bethmassi/archive/2015/02/25/understanding-net-2015.aspx\">[link]</a> " +
        "<a href=\"http://www.reddit.com/r/programming/comments/2x9o4o/understanding_net_2015/\">[3 comments]</a>\n" +
        " ";
String regex = "href=.(http.*?)\"";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
m.find(); // ignore the 1st match
m.find(); // find the 2nd match
String urlStr = m.group(); // read the 2nd match
System.out.println("urlStr = " + urlStr); // prints: urlStr = http://blogs.msdn.com/b/bethmassi/archive/2015/02/25/understanding-net-2015.aspx

关于java - RegEx 从字符串中提取第二个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28752814/

相关文章:

java - 是否有一种通用的 Java 方法来修剪对象图中的每个字符串?

java - Java Iterator是否会进行第二次遍历来删除?

java - 在Java属性文件中存储十六进制值,不带 "\"

java - 有没有快速将文件复制到SD卡的方法

java二维数组转字符串数组

eclipse - Eclipse JDK设置如何影响系统的JDK设置

javascript - 无法使用 PhantomJS Selenium Java 单击弹出警报消息“确定或取消”,在 IE 上工作正常

java - 如何更改或使用创建对象的类中的变量?

java - Eclipse 使用正则表达式查找/替换注释行

相当于 session_start()、session_destroy() 和 $_SESSION ['username' 的 Java ]