gpt4 book ai didi

java - ReplaceFirst 为正则表达式

转载 作者:行者123 更新时间:2023-11-30 07:14:51 26 4
gpt4 key购买 nike

假设我有一个字符串

String link = "www.thisisalink.com/tick1=@tick1@&tick2=@tick2@&tick3=@tick3@&tick4=@tick4@";

然后我可以使用

link = replaceFirst("(.+)=@\\1@", "");

为了实现

link = "www.thisisalink.com/&tick2=@tick2@&tick3=@tick3@&tick4=@tick4@";

但我想循环遍历字符串,以获取已替换的内容并将其保存在其他地方,例如链表或数组......结果将是:

String[] result = ["tick1=@tick1@", "tick2=@tick2@", "tick3=@tick3@", "tick4=@tick4@"];
String link = "www.thisisalink.com/&&&";

但是我该怎么做呢?我试着循环

while (link.matches("(.+)=@\\1@")){}

哪个没用。

最佳答案

您可以使用 Pattern Matcher 类来遍历您的字符串以查找与您的正则表达式匹配的子字符串。然后,您可以使用 appednReplacementappendTail 替换已创建的子字符串。要建立匹配,您可以使用 Matcher 实例中的 group()

这是你想要的东西

String link = "www.thisisalink.com/tick1=@tick1@&tick2=@tick2@&tick3=@tick3@&tick4=@tick4@";

StringBuffer sb = new StringBuffer();

Pattern p = Pattern.compile("(.+)=@\\1@");
Matcher m = p.matcher(link);
List<String> replaced = new ArrayList<>();

while (m.find()) {
m.appendReplacement(sb, "");
replaced.add(m.group());
}
m.appendTail(sb);
//to replace link with String stored in sb use link=sb.toString();
//otherwise link will be unchanged
System.out.println(sb);
System.out.println(replaced);

输出:

www.thisisalink.com/&&&
[tick1=@tick1@, tick2=@tick2@, tick3=@tick3@, tick4=@tick4@]

关于java - ReplaceFirst 为正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18289468/

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