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