我有一个包含html代码并尝试将其中不同网址的域名替换为http://localhost
的字符串,但我正在应用的正则表达式始终返回最后一个匹配而不是整个字符串。
请参阅下面的代码段
String data = "https://example.com/abc/xyz https://sub.example.com/abc/def https://sub-example.com/abc/ijk";
System.out.println(data);
data = data.replaceFirst("(http|https)://.*/abc/", "http://localhost/");
System.out.println(data);
以下是此代码生成的输出
http://localhost/ijk
我在这里做错了什么......请让我知道
答案 0 :(得分:2)
你应该重新限制.*
模式,因为它匹配任何0+字符尽可能多。使用\S*
,除空白之外的任何0 +字符。
此外,您需要使用.replaceAll
来替换所有匹配项。
所以,使用
data = data.replaceAll("https?://\\S*/abc/", "http://localhost/");
请参阅regex demo。
<强>详情
https?
- http
或https
://
- 文字://
子字符串\\S*
- 除了空格之外的任何0 +字符/abc/
- /abc/
子字符串。