使用正则表达式替换特定单词(全局)- Java
Replace specific words using regular expression (globally) - Java
我正在尝试想出一个正则表达式来替换特定单词而不考虑位置/顺序,但它似乎不起作用
示例输入:
This is a a an the a the testing
正则表达式:
(\sa\s)|(\san\s)|(\sthe\s)
实际输出:
This is a the the testing
预期输出:
This is testing
您的正则表达式无法匹配某些 a
或 an
或 the
子字符串,这主要是因为重叠 matches.That 是,在此字符串 foo an an an
,上面的正则表达式会匹配第一个 <space>an<space>
,它不会匹配第二个 an
,因为第一个匹配也消耗 space,它在第二个 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
我正在尝试想出一个正则表达式来替换特定单词而不考虑位置/顺序,但它似乎不起作用
示例输入:
This is a a an the a the testing
正则表达式:
(\sa\s)|(\san\s)|(\sthe\s)
实际输出:
This is a the the testing
预期输出:
This is testing
您的正则表达式无法匹配某些 a
或 an
或 the
子字符串,这主要是因为重叠 matches.That 是,在此字符串 foo an an an
,上面的正则表达式会匹配第一个 <space>an<space>
,它不会匹配第二个 an
,因为第一个匹配也消耗 space,它在第二个 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