将这个String字符串:“小蔻提醒您,您有{@keyword=1202,value=430}积分即将在{@keyword=1203,value=2023-02-11}过期哦! ” ,用java写一个正则表达式的main方法,将大括号里面的@keyword=和value=的值取出封装成一个Map<String,String>, map的key用来保存匹配后的@keyword的值,value来保存匹配后的value的值
时间: 2023-05-23 15:00:48 浏览: 111
c#字符串查找某词出现的次数及索引
好的,这是一个非常基础的正则表达式问题,下面是对应的Java代码,用来匹配大括号里面的内容并将其保存在一个Map中:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String str = "小蔻提醒您,您有{@keyword=1202,value=430}积分即将在{@keyword=1203,value=2023-02-11}过期哦!";
// 定义正则表达式
String regex = "\\{@keyword=(\\d+),value=([^}]+)\\}";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 匹配字符串
Matcher matcher = pattern.matcher(str);
// 遍历匹配结果并将其保存到Map中
Map<String, String> map = new HashMap<String, String>();
while (matcher.find()) {
String key = matcher.group(1);
String value = matcher.group(2);
map.put(key, value);
}
// 输出结果
System.out.println(map);
}
}
```
输出结果为:{1202=430, 1203=2023-02-11},正如预期的那样,大括号里面的@keyword和value的值已经被成功地提取出来并保存在了Map中。
阅读全文