为了账号安全,请及时绑定邮箱和手机立即绑定

没有空格结束时,正则表达式模式不起作用

没有空格结束时,正则表达式模式不起作用

烙印99 2021-11-11 14:15:11
我想删除包含 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不删除结束网址)期望的输出是: abc  something我猜它是对正则表达式的简单更改...编辑:抱歉,前面的示例在 http 之后没有包含实际的 url。
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

你的正则表达式是

https?://.*?\\s+

最后一个标记\s+表示一个或多个空格字符。如果要删除不一定以空格结尾的子字符串,可以用*代替+-*重复前面的标记零次或多次

String x = line.replaceAll("https?://.*?\\s*", " ");

也就是说,如果您拥有的 URL 有效并且不包含任何空格字符,则将非空格字符与\S空字符串匹配并替换为空字符串可能更有意义,而不是查找空格字符,匹配它们,然后然后用另一个空格替换:

String x = line.replaceAll("https?://\\S*", "");


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信