有的时候,会有这样的需求,给定一个特定结构的字符串,需要将其中的可变部分提取出来,例如,有一段关于优惠券的话术"满199元减20元",其中,199是使用优惠券的条件,而20则是具体的优惠券金额,这两个数字属于可变部分,现要求直接提取这两部分数字。
当然,我们可以使用String现有api进行提取,indexOf、subString等配合使用即可,但我们今天使用正则表达式进行匹配和提取,详见代码
// 待提取的目标资源
String source = "满199元减20元";
// 编译正则样式
Pattern pattern = Pattern.compile("^满(.*)元减(.*)元$");
// 获取匹配器
Matcher matcher = pattern.matcher(source);
if (matcher.matches()) {
// 提取第一段匹配的动态文本 199
System.out.println(matcher.group(1));
// 提取第二段匹配的动态文本 20
System.out.println(matcher.group(2));
}