我想删除包含http或https的字符串。我有以下代码段:
String line="abc http://someurl something https://someurl";
if (line.contains("https") || line.contains("http")) {
System.out.println(line);
String x = line.replaceAll("https?://.*?\\s+", " ");
System.out.println(x);
}
输出为:abc something https://someurl
(不删除结尾URL)
所需的输出为:abc something
我猜想它是对正则表达式的简单更改...
编辑:对不起,前面的示例在http之后没有实际的网址。
答案 0 :(得分:4)
您的正则表达式是
https?://.*?\\s+
最后一个标记\s+
表示一个或多个空格字符。如果要删除不一定必须以空格结尾的子字符串,则可以用*
而不是+
重复-*
的意思是重复前面的标记零次或多次:
String x = line.replaceAll("https?://.*?\\s*", " ");
也就是说,如果您拥有的网址有效且不包含任何空格字符,则将非空格字符与\S
匹配并替换为空字符串(而不是外观)可能更有意义空格字符,将其匹配,然后替换为另一个空格:
String x = line.replaceAll("https?://\\S*", "");