Java 在特定字符后替换特定字符序列

Java 在特定字符后替换特定字符序列,java,regex,Java,Regex,例如,我有以下字符串: O > O §o TEXT §r §o TEXT §r 我只需要在字符之后用§r§a替换所有)*>。(§r) 替换为:$1§r§a **要更好地查看图像,只需右键单击图像并选择“在新窗口中查看” 例子 现场演示 示例文本 §ro>O§O文本§r§O文本§r 再植后 §ro>O§O文本§r§a§O文本§r§a 解释 节点说明 ------------------------------------------------------------------

例如,我有以下字符串:

O > O §o TEXT §r §o TEXT §r
我只需要在
字符之后用
§r§a
替换所有

应该是

O > O §o TEXT §r§a §o TEXT §r§a
结果呢

我尝试了*(\§r)正则表达式,但它忽略了


您可以指出我的错误吗?

最简单的方法是先将其拆分为两个字符串,然后运行
替换。也就是说,你可以

int index = inputString.indexOf('>') + 1;
String first = inputString.subString(0, index);
String second = inputString.subString(index);
String finalString = first + second.replace("§r", "§r§a");
使用纯正则表达式执行此操作将很困难。

Description
((?:(?!>)*>。(§r)

替换为:
$1§r§a

**要更好地查看图像,只需右键单击图像并选择“在新窗口中查看”

例子 现场演示

示例文本

§ro>O§O文本§r§O文本§r
再植后

§ro>O§O文本§r§a§O文本§r§a
解释
节点说明
----------------------------------------------------------------------
(组和捕获到\1:
----------------------------------------------------------------------
(?:组,但不捕获(0或更多)
次数(与最大金额匹配)
(可能的):
----------------------------------------------------------------------
(?!向前看,看看是否有:
----------------------------------------------------------------------
>                        '>'
----------------------------------------------------------------------
)展望的结束
----------------------------------------------------------------------
.除以下字符以外的任何字符\n
----------------------------------------------------------------------
)*分组结束
----------------------------------------------------------------------
>                        '>'
----------------------------------------------------------------------
.*?除\n(0次或多次)以外的任何字符
(匹配尽可能少的金额)
----------------------------------------------------------------------
|或
----------------------------------------------------------------------
)结束\1
----------------------------------------------------------------------
(分组并捕获到\2:
----------------------------------------------------------------------
§r'§r'
----------------------------------------------------------------------
)结束\2
----------------------------------------------------------------------

纯正则表达式方法是使用
\G
如下

(\G(?!\A)|>)(.*?)§r
并且,替换为

$1$2§r§a

Java代码


是;但是您可能还想首先检查
是否在字符串中;此代码将替换字符串中的所有
§r
,但字符串中的所有
§r
。@AndyTurner这是正确的。为了答案的简单性,我省略了故障保护检查。但是使用类似字符串OriginalMessage=“O§r>O§O TEXT§r§O TEXT§r”这样的代码;字符串消息;Message=OriginalMessage.replaceAll((((?:(!>)*>。*?)(§r)”,“§r§a”);System.out.println(消息);它只输出“§r§a§o文本§r§a”
System.out.println("O§r §r > O §o TEXT §r §o §r TEXT §r".replaceAll("(\\G(?!\\A)|>)(.*?)§r", "$1$2§r§a"));