连续比赛的正则表达式

时间:2017-04-14 22:49:52

标签: java regex

我是正则表达式和java的新手,所以我一直在努力解决这个问题很长一段时间。有没有人知道如何创建一个正则表达式表达式以与替换函数一起使用来替换连续匹配或仅与空格分隔符匹配。

示例1: string:" aa aa aa aa!"

替换为:" bb"

结果:" bb bb bb aa!"

示例2: 字符串:"这是一个蚂蚁"

替换:" @@"

结果:"这是@@ @@ ant"

示例3: 字符串:"这是一个蚂蚁"

替换:" @@"

结果:"这是@@ ant"

谢谢,

3 个答案:

答案 0 :(得分:0)

您可以使用String类的 replace() 方法:

String data = "aa aa aa aa!";
System.out.println(data.replace("aa ", "bb "));

结果:

bb bb bb aa!

答案 1 :(得分:0)

看来你正在寻找只有当表达式A后跟表达式b时才匹配的positive lookahead

String s = "This is an an an ant";
// \\s represents any whitespace
// (?=an) stands for positive lookahead 
String result = s.replaceAll("an\\s(?=an)", "@@ ");

答案 2 :(得分:0)

您似乎想要替换后面跟着空格和相同值的整个单词,无论它是否是一个完整的单词。

我用

s = s.replaceAll("\\b(\\w+)(?=\\s\\1)", "@@");

请参阅regex demo

详细

  • \b - 领先的单词边界
  • (\w+) - 第1组捕捉一个字
  • (?=\s\1) - 一个积极的前瞻,需要一个空格(\s),后面跟着存储在第1组内的相同值(\1反向引用)。