【问题标题】:Java : replacing all URLs with anchor tags that aren't already in anchor tagsJava:用锚标签中没有的锚标签替换所有 URL
【发布时间】:2011-03-09 19:44:29
【问题描述】:

我正在尝试替换文档的锚标记封闭 URL 中的所有非锚标记封闭 URL。所以给定字符串:

I have two urls for google: <a href="http://www.google.com/">google</a> and http://www.google.com/

我想用这个替换它:

I have two urls for google: <a href="http://www.google.com/">google</a> and <a href="http://www.google.com/">http://www.google.com/</a>

有没有人知道在 Java 中执行此操作的干净方法?

【问题讨论】:

    标签: java regex url replace


    【解决方案1】:

    这可能会让你开始(它适用于给定的示例):

    public class test {
        public static void main(String[] args) {
            final String test = "I have two urls for google: <a href=\"http://www.google.com/\">google</a> and http://www.google.com/";
            System.out.println(test.replaceAll("(?<!\\<a\\ href=\")http:\\/\\/[^ ]*",
                                               "<a href=\"$0\"/>"));
        }
    }
    

    它有一些问题:

    • 它不考虑“a”标签中的空格,除了开头的“a”和“href”之间的单个空格
    • 假定 URL 是“http://”后跟零个或多个不等于空格的字符 (“”)

    这适用于简单的示例,我不确定您将如何编写完整的解决方案。

    【讨论】:

    • 这是一个很好的答案。如果您也将 https 添加到正则表达式中会很好。 (?$0
    最近更新 更多