我有一个像
/.../Male/...
or
/../Female/...
现在我想做如下的事情来用 foo 替换字符串的男性女性部分
/../foo/..
这个的正则表达式是什么......目前我正在做如下但没有成功
url.replace("(fe)?male","foo")
您需要使用replaceAll
正则表达式,表达式可能更简单:
url.replaceAll("(Fem|M)ale","foo");
或者
url.replaceAll("Female|Male","foo");
你需要replaceAll()
,它使用正则表达式来查找要替换的内容,而不是replace()
,它查找纯文本:
url = url.replaceAll("(fe)?male","foo");
另请注意,字符串是不可变的,因此调用替换方法不会更改字符串,它会返回一个带有所做更改的新字符串,因此您必须将结果分配回变量。
更好的正则表达式是:
url = url.replaceAll("(?i)\\b(fe)?male\\b","foo");
正\b
则表达式确保被替换的是整个单词女/男。如果没有\b
它,它将取代“诅咒”中的“男性”。
使(?i)
匹配不区分大小写。
您需要replaceAll
用于模式。
此外,您应该考虑使用不区分大小写的模式,例如:
String input = ".../Female/...";
System.out.println(input.replaceAll("(?i)(fe)?male", "foo"));
输出:
.../foo/...