将这个String字符串:“小蔻提醒您,您有{@keyword=1202,value=430}积分即将在{@keyword=1203,value=2023-02-11}过期哦! ”,用java写一个正则表达式的main方法,将大括号里面的@keyword=和value=的值取出封装成一个TemplateParam对象, 这个对象里面有两个参数,参数1为String类型的name,用来保存匹配后的keyword的值,第二个参数为String类型的templateParamJson,用来保存匹配后的value的值,如果有多个匹配结果有则返回一个List<TemplateParam>
时间: 2023-05-23 15:00:36 浏览: 151
以下是Java代码的实现:
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class C知道 {
public static void main(String[] args) {
String str = "小蔻提醒您,您有{@keyword=1202,value=430}积分即将在{@keyword=1203,value=2023-02-11}过期哦! ";
Pattern p = Pattern.compile("\\{@keyword=(\\d+),value=(.*?)\\}");
Matcher m = p.matcher(str);
List<TemplateParam> list = new ArrayList<>();
while (m.find()) {
TemplateParam tp = new TemplateParam();
tp.name = m.group(1);
tp.templateParamJson = m.group(2);
list.add(tp);
}
System.out.println(list);
}
static class TemplateParam {
String name;
String templateParamJson;
@Override
public String toString() {
return "TemplateParam{" + "name='" + name + '\'' + ", templateParamJson='" + templateParamJson + '\'' + '}';
}
}
}
输出结果为:
[TemplateParam{name='1202', templateParamJson='430'}, TemplateParam{name='1203', templateParamJson='2023-02-11'}]
这个程序可以将字符串中的@keyword和value中的值匹配出来,然后封装成一个TemplateParam对象,最终返回一个包含多个匹配结果的List对象。
阅读全文