Java使用正则表达式实现搜索与替换

Java正则表达式获取中括号之间的内容

Pattern官网文档

Matcher官网文档

正则表达式之Matcher类中group方法

JAVA正则表达式,matcher.find()和 matcher.matches()的区别

由于在开发过程中碰到了需要使用正则表达式去替换特殊的内容,所以将所学到的记录下来!

待替换的字符串

String str = "拿杯[温度]的[水]"

刚开始的思路是准备找出 “[” 和 “]” 的下标,然后再用 substring 截取获得中括号中的内容。后来发现当中括号多起来的时候这个方法就失效了!

其实之前是有用 java.util.regex.Pattern , java.util.regex.Matcher ,不过太久没用,有点忘记了哈哈哈…

>> Pattern 和 Matcher

java.util.regex 包下

  1. Pattern (模式类):用来表达和陈述所要搜索模式的对象。Pattern.compile(pattern) pattern 也就是要匹配的正则表达式
  2. Matcher (匹配器类):真正影响搜索的对象。上面Pattern.compile(pattern)得到一个Pattern对象 为 rr.matcher(line) line也即是你需要进行匹配的字符串 。这样会得到一个 Matcher 的对象。
  3. PatternSyntaxException :当遇到不合法的搜索模式时,会抛出例外

>> 解决

public static String processStr(String str,IntentEntity intent) {

    //正则表达式:获取[]中的内容
    String regex = "\\[(.*?)]";
    Pattern pattern = Pattern.compile(regex);
    //查找str中匹配的字段
    Matcher matcher = pattern.matcher(str);

    while (matcher.find()) {
        str = str.replace("[" + matcher.group(1) + "]", "${slot1}");
    }

    return str;
}
  • find():尝试查找与模式匹配的输入序列的下一个子序列
  • group(int group):返回在上一次匹配操作期间给定组捕获的输入子序列

解释:

  1. Matcher 类中group(0) 或者 group() 表示正则表达式中符合条件的字符串。

  2. Matcher 类中 group(1) 表示正则表达式中符合条件的字符串中的第一个 []中的字符串。

  3. Matcher 类中 group(2) 表示正则表达式中符合条件的字符串中的第二个 [] 中的字符串。

  4. Matcher 类中 group(3) 表示正则表达式中符合条件的字符串中的第三个 [] 中的字符串。

>> 结果

拿杯${str1}的${str2}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值