【问题标题】:Java regex URL prefix removalJava 正则表达式 URL 前缀删除
【发布时间】:2015-03-02 00:16:02
【问题描述】:

我有一组网址。其中一些有一个字符串www 作为子字符串,而其中一些没有。我需要删除每个 URL 中的前缀。 我尝试使用许多正则表达式变体删除此前缀:

newStr = str.replaceAll("http://|http://www.", "");
newStr = str.replaceAll("^http://|http://www.$", "");
newStr = str.replaceAll("http://|http://www.", "");

其中str - 是输入的URL字符串,newStr是替换后的URL。 这些变体中的每一个都仅替换 http:// 前缀,但 www. 仍保留在结果中。如何更改我的正则表达式以删除 http:// 字符串以及 http://www. 字符串?

我知道我可以使用两次replaceAll()

newStr = str.replaceAll("http://", "").replaceAll("www.", "");

但是我应该怎么做才能保持一个 replaceAll()编辑正则表达式?

【问题讨论】:

    标签: java regex replace


    【解决方案1】:
    newStr = str.replaceFirst("^(http://)?(www\\.)?", "");
    

    请注意,正则表达式中的. 表示任何含义,因此您需要对其进行转义,否则您将从wwwiscool.com 中删除前4 个符号,而您可能不希望这样。而且您可能只想替换第一个匹配的前缀。

    【讨论】:

    • 对于 https 和 http "^(http[s]?://)?(www\\.)?"
    【解决方案2】:

    您可以使用str.replace,例如:

    String str = "http://www.google.com";
    str.replace("http://","").replace("http:// www.","").replace("www.","");
    

    更多关于str.replace的信息

    【讨论】:

    • @Atuos 这只是一个例子。
    • 感谢您的回答。但是我应该使用什么正则表达式来调用replace() 方法一次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多