1

是否可以检测和删除句子中的任何类型的 URL?

例如:

今天天气很冷,但我想出去。http://weathers.com ......我会喝杯茶......

应该成为

今天天气很冷,但我想出去。我会喝杯茶...
4

2 回答 2

3

这取决于您希望匹配过程的全面程度。您可以尝试使用简单的东西

str.replaceAll("http://[^\\s]+", "")

例如

System.out.println("Today,wheather is cold.But I want to out. "
        + "http://weathers.com..... And I will take a cup of tea..."
        .replaceAll("http://[^\\s]+", ""));
今天天气很冷,但我想出去。我会喝杯茶...

如果您想要更健壮的东西来匹配有效的 URL,请使用更完整的 URL 正则表达式:

/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \.-]*) *\/?$/

如需更彻底的匹配,请参阅答案。

于 2013-07-01T15:19:39.850 回答
1

试试下面的正则表达式

((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?

为了匹配您的有效URL和以下代码应该做的,你想要什么:

    String str = "Today,wheather is cold. But I want to out. http://weathers.com..... And I will take a cup of tea";
    String regularExpression = "(((http|ftp|https):\\/\\/)?[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?)";
    str = str.replaceAll(regularExpression,"");
    System.out.println(str);

编辑:

然而,这个正则表达式不适用于所有类型的 URL,因为它太复杂并且很难找到完美的正则表达式来匹配所有类型的 URL。

于 2013-07-01T15:30:03.343 回答