使用正则表达式替换子字符串的所有奇数出现

搜寻者:

我有一串 ~~40~~ Celsius Temp: 33 Celsius Temp:~~50~~

我想用另一个字符串“ **”替换子字符串“ ~~”(即1st,3rd ..)的奇数出现。

我的输出应该是 **40~~ Celsius Temp: 33 Celsius Temp:**50~~

如何用Java中的正则表达式实现这一目标?

蒂姆·比格莱森(Tim Biegeleisen):

您确实需要一个基本的解析器来处理此问题。正则表达式并非旨在计算此类事件。下面代码的逻辑很简单。每次我们打比赛,~~我们都会做两件事之一。如果是奇数次出现,则将空字符串附加到替换项上,否则将重新添加匹配的字符串~~

String input = "~~40~~ Celsius Temp: 33 Celsius Temp:~~50~~";
Pattern p = Pattern.compile("~~");
Matcher m = p.matcher(input);
StringBuffer sb = new StringBuffer(input.length());
int i = 0;

while (m.find()) {
    if (i % 2 == 0) {
        m.appendReplacement(sb, "**");
    }
    else {
        m.appendReplacement(sb, m.group(0));
    }
    ++i;
}
m.appendTail(sb);
System.out.println(sb.toString());

**40~~ Celsius Temp: 33 Celsius Temp:**50~~

演示版

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用正则表达式替换所有出现的子字符串?

使用正则表达式替换VQMod中所有出现的字符串

在javascript中使用正则表达式替换字符的奇数出现

Vim查找并替换所有出现的正则表达式字符串

Javascript:使用正则表达式将字符串中所有出现的“ a”替换为“ b”

如何使用正则表达式替换花括号中的所有子字符串?

使用正则表达式查找并替换字符串中模式的所有实例

使用正则表达式替换字符串中的所有图像标签

使用正则表达式在字符串中查找所有出现的日期

使用正则表达式提取指定符号之间的所有子字符串

使用正则表达式组替换字符串中的子字符串

notepad ++反向正则表达式替换(除字符串外的所有字符)

使用正则表达式替换字符串

使用正则表达式替换字符串

使用正则表达式替换字符串;

如何使用正则表达式替换子字符串中的特定字符?

使用正则表达式获取子字符串(带有“”的字符串)

正则表达式替换Java文件中的所有字符串文字

字符串替换所有不是马赫正则表达式

Java字符串替换所有正则表达式

替换匹配的正则表达式字符串之外的所有内容

正则表达式替换所有字符串,不包括特殊前缀

使用正则表达式的子字符串

使用正则表达式提取2个字符之间的所有子字符串组合

JavaScript:提取字符串中所有出现的正则表达式

正则表达式匹配特定字符串中的所有出现

正则表达式-在所有组的字符串中首次出现

正则表达式匹配字符串中的所有出现

在Groovy中使用正则表达式替换字符串中的所有匹配项