我想从每个元音前面的字符串中删除“OB”。例如:“这是一些非常棒的文字”并且在向它添加OB之后:“THOBISOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXT”这是我写的方法。
public static String unObify(String param) {
String deleteOB = param.replaceAll("[OB]", "");
return deleteOB;
}
输出:THISISSMEREALLYGREATLDTEXT
但问题是这个方法还删除了我的String中的O和B.我只想删除一个接一个发生的OB。
使用当前正则表达式[OB]
,您可以指定与O
或B
匹配的字符类。
如果你想在每个元音之前替换OB
,你可以使用正向前瞻来断言后面是元音:
或者正如@Tim Biegeleisen指出的那样,使用make lookahead case不敏感:
OB(?=(?i)[AEIOU](?-i))
或OB(?=[aeiouAEIOU])
public static String unObify(String param) {
String deleteOB = param.replaceAll("OB(?=[AEIOU])", "");
return deleteOB;
}
那将取代
THOBISOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXT
到THISISSOMEREALLYGREATBOLDTEXT
和
THOBSOBISSOBOMOBEROBEOBALLYGROBEOBATBOBOLDTOBEXT
到THOBSISSOMEREALLYGREATBOLDTEXT
删除[]
并写.replaceAll("OB(?=[AaEeIiOoUu])", "");
。
[]
意味着单独匹配[]
内的任何东西