我是正则表达式和java的新手,所以我一直在努力解决这个问题很长一段时间。有没有人知道如何创建一个正则表达式表达式以与替换函数一起使用来替换连续匹配或仅与空格分隔符匹配。
示例1: string:" aa aa aa aa!"
替换为:" bb"
结果:" bb bb bb aa!"
示例2: 字符串:"这是一个蚂蚁"
替换:" @@"
结果:"这是@@ @@ ant"
示例3: 字符串:"这是一个蚂蚁"
替换:" @@"
结果:"这是@@ ant"
谢谢,
答案 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
反向引用)。