什么是男性和女性字符串的正则表达式

时间:2013-07-28 08:51:46

标签: java regex

我有一个像

的网址
 /.../Male/...
 or

 /../Female/...

现在我想做以下的事情,用foo替换字符串的男性女性部分

 /../foo/..

这是什么正则表达式... 目前我在做如下但没有成功

url.replace("(fe)?male","foo")

3 个答案:

答案 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/...