有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java正则表达式:在字符串中替换特定类型的url?

样本输入:

"http://bits.wikimedia.org/w/extensions-1.17/MobileFrontend/stylesheets/webkit.css"

我的尝试:"http://.*?/stylesheets/webkit.css"未找到任何匹配项

"http://""webkit.css"之间的url部分是可变的

谢谢

糟糕的是,我使用的是Java的replace()函数,而不是replaceFirst()或replaceAll()


共 (1) 个答案

  1. # 1 楼答案

    一种解决方案是使用分组:

    String input = "http://bits.wikimedia.org/w/extensions-1.17/" + 
                   "MobileFrontend/stylesheets/webkit.css";
    
    String replacement = "example.com";
    
    String result = input.replaceAll("(http://).*?(/stylesheets/webkit\\.css)",
                    "$1" + replacement + "$2");
    

    结果将等于http://example.com/stylesheets/webkit.css


    另一个选项是使用环顾四周:

    String result = input.replaceAll("(?<=http://).*(?=/stylesheets/webkit\\.css)",
                                     replacement);
    

    上面写着“用replacement替换http:///stylesheets/webkit.css之间的所有内容。”