gpt4 book ai didi

java - 将不同的正则表达式匹配替换为 Java 中基于匹配的结果

转载 作者:行者123 更新时间:2023-12-02 06:55:04 24 4
gpt4 key购买 nike

正则表达式的一种常见用法是用基于匹配的内容替换匹配。

例如,带有票号 ABC-1234: some text (ABC-1234) 的提交文本必须替换为 <ABC-1234>: some text (<ABC-1234>) (<> 作为一些环境的示例。)

这在 Java 中非常简单

String message = "ABC-9913 - Bugfix: Some text. (ABC-9913)";
String finalMessage = message;
Matcher matcher = Pattern.compile("ABC-\\d+").matcher(message);
if (matcher.find()) {
String ticket = matcher.group();
finalMessage = finalMessage.replace(ticket, "<" + ticket + ">");
}
System.out.println(finalMessage);

结果为<ABC-9913> - Bugfix: Some text. (<ABC-9913>) .

但是如果输入字符串中有不同的匹配项,这就不同了。我尝试了一个稍微不同的代码替换 if (matcher.find()) {while (matcher.find()) { 。结果因重复替换而变得困惑 ( <<ABC-9913>> )。

如何以优雅的方式替换所有匹配的值?

最佳答案

您可以简单地使用 replaceAll :

String input = "ABC-1234: some text (ABC-1234)";
System.out.println(input.replaceAll("ABC-\\d+", "<$0>"));

打印:

<ABC-1234>: some text (<ABC-1234>)

$0 是对匹配字符串的引用。

Java regex reference (请参阅“分组和捕获”)。

关于java - 将不同的正则表达式匹配替换为 Java 中基于匹配的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17487586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com