是否可以检测和删除句子中的任何类型的 URL?
例如:
今天天气很冷,但我想出去。http://weathers.com ......我会喝杯茶......
应该成为
今天天气很冷,但我想出去。我会喝杯茶...
这取决于您希望匹配过程的全面程度。您可以尝试使用简单的东西
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 \.-]*) *\/?$/
如需更彻底的匹配,请参阅此答案。
试试下面的正则表达式
((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。