使用正则表达式(全局)替换特定单词 - Java

时间:2015-04-16 00:41:33

标签: java regex textpad

我试图想出一个正则表达式来替换不同位置/顺序的特定单词,但它似乎不起作用

示例输入:

This is a a an the a the testing

正则表达式:

(\sa\s)|(\san\s)|(\sthe\s)

实际输出:

This is a the the testing

预期产出:

This is testing

1 个答案:

答案 0 :(得分:1)

您的正则表达式无法匹配某些aanthe个子字符串,这主要是因为匹配重叠。也就是说,在此字符串中{{1} },上面的正则表达式与第一个foo an an an匹配,并且它不会与第二个<space>an<space>匹配,因为第一个匹配也会消耗在第二个an之前退出的空格。

an

DEMO

如果任何一个字符串最后出现,则上述正则表达式将失败。在这种情况下,你可以使用它,

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());