gpt4 book ai didi

java regex - 替换多次出现的相同模式

转载 作者:行者123 更新时间:2023-11-30 10:48:35 26 4
gpt4 key购买 nike

我有一个简单的程序,我试图用一个字符串替换多次出现的 $P_NAME$。

public static void replaceAllTest() {
String textBanner = "This advertisement on $P_NAME$ will make the $P_NAME$ very popular";
Pattern replace = Pattern.compile("\\$(.*)\\$");
Matcher matcherValue = replace.matcher(textBanner);
String updatedValue = matcherValue.replaceFirst("DotCom");
System.out.println(updatedValue);
}

我希望输出是 This advertisement on DotCom will make the DotCom very popular 但我得到的输出是 This advertisement on DotCom very popular。基本上 replaceAll 会删除所有文本,直到下一次出现该模式。

请帮忙。

最佳答案

您需要使用 non-greedy regular expression使用 \\$(.*?)\\$:

public static void replaceAllTest() {
String textBanner = "This advertisement on $P_NAME$ will make the $P_NAME$ very popular";
Pattern replace = Pattern.compile("\\$(.*?)\\$"); // <-- non-greedy here with "?"
Matcher matcherValue = replace.matcher(textBanner);
String updatedValue = matcherValue.replaceAll("DotCom"); // <-- replaceAll to replace all matches
System.out.println(updatedValue);
}

关于java regex - 替换多次出现的相同模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35750418/

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