1

我正在尝试提出一个正则表达式来替换特定单词,而不管位置/顺序如何,但它似乎不起作用

示例输入:

This is a a an the a the testing

正则表达式:

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

实际输出:

This is a the the testing

预期输出:

This is testing
4

1 回答 1

1

您的正则表达式无法匹配某些aanthe子字符串,这主要是因为重叠匹配。也就是说,在这个字符串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());

输出:

test is success and example
于 2015-04-16T00:44:48.033 回答