我想从字符串中删除所有两个或多个连续的A
。
即,如果输入为AAAAAAABBABBCACBAAZASCAAA
,则输出应为BBABBCACBZASC
。
我尝试的是,
String k = "AAAAAAABBABBCACBAAZASCAAA";
System.out.println(k.replaceAll("(AA)+", "-").replaceAll("-A","").replaceAll("-", ""));
工作正常。但如果字符串包含-
,则会产生问题。我该如何解决?
答案 0 :(得分:7)
k.replaceAll("A{2,}", "-");
是你想要的模式
答案 1 :(得分:1)
String k = "AAAAAAABBABBCACBAAZASCAAA";
System.out.println(k.replaceAll("(A{2,})", ""));
答案 2 :(得分:1)
如果您使用以下内容,则只需要一个replaceAll步骤:
String original = "AAAAAAABBABBCACBAAZASCAAA";
String replaced = original.replaceAll("A{2,}", "");
// assertEquals("BBABBCACBZASC",replaced);
您的正则表达式仅匹配* A * s的偶数,这就是您必须使用其他replaceAll步骤才能成功的原因。你真正想要的是用<“替换两个或多个连续的 * A * s。在正则表达式中,这需要使用正确的量词,如Quantifiers tutorial中所述。在您的情况下:A{2,}
。