我试图想出一个正则表达式来替换不同位置/顺序的特定单词,但它似乎不起作用
示例输入:
This is a a an the a the testing
正则表达式:
(\sa\s)|(\san\s)|(\sthe\s)
实际输出:
This is a the the testing
预期产出:
This is testing
答案 0 :(得分:1)
您的正则表达式无法匹配某些a
或an
或the
个子字符串,这主要是因为匹配重叠。也就是说,在此字符串中{{1} },上面的正则表达式与第一个foo an an an
匹配,并且它不会与第二个<space>an<space>
匹配,因为第一个匹配也会消耗在第二个an
之前退出的空格。
an
如果任何一个字符串最后出现,则上述正则表达式将失败。在这种情况下,你可以使用它,
string.replacaAll("\\s(?:an|the|a)(?=\\s)", "");
<强>输出:强>
String test = "a an the an test is a success and an example";
System.out.println(test.replaceAll("\\s(?:an|the|a)(?=\\s|$)|^(?:an|the|a)(?=\\s)", "").trim());