java Matcher匹配头尾截取替换字符串的案例

作者:常乐_smile 时间:2023-01-30 11:44:48 

在java 编程中,我们常常有这样的需求:需要将一段字符串内的特定字符串,按照一定规则查找出来或替换,比如匹配文本开头规则和结束规则。

以下就是Matcher的使用:


import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* @Author changle
* @Time 17/10/12.
* @Desc 匹配头尾截取替换字符串
* 待替换内容:
* url: jdbc:mysql://${cot.identity.db.ip}:3306/${cot.identity.db.dbname}?useUnicode=true&characterEncoding=UTF8
* 替换后:
* url: jdbc:mysql://{{cot.identity.db.ip}}:3306/{{cot.identity.db.dbname}}?useUnicode=true&characterEncoding=UTF8
*/
public class CommonTest {
 public static void main(String[] args) {
   String str = "url: jdbc:mysql://${cot.identity.db.ip}:3306/${cot.identity.db.dbname}?useUnicode=true&characterEncoding=UTF8";
   if (str.contains("${cot.")) {
     Pattern leftpattern = Pattern.compile("\\$\\{");
     Matcher leftmatcher = leftpattern.matcher(str);
     Pattern rightpattern = Pattern.compile("}");
     Matcher rightmatcher = rightpattern.matcher(str);
     int begin = 0;
     List<String> foundKeys = new ArrayList<>();
     while (leftmatcher.find(begin)) {
       rightmatcher.find(leftmatcher.start());
       String configKey = str.substring(leftmatcher.start(), rightmatcher.end());
       System.out.println(configKey.replace("${", "{{"));
       foundKeys.add(configKey);
       begin = rightmatcher.end();
     }
     System.out.println("原内容:"+str);
     for (String foundkey : foundKeys){
       str = str.replace(foundkey, foundkey.replace("${cot.","{{cot.").replace("}", "}}").replace("-","_"));
     }
     System.out.println("替换后:"+str);
   }
 }
}

补充知识:JAVA正则表达式 Pattern和Matcher,用正则替换对应的内容

需求:

过滤样式,比如:

<p><span style="font-size: larger">铅笔机一个</span></p>

过滤后结果= 铅笔机一个


public static void main(String[] args) {
 String skuName="<p><span style='font-size: larger'>铅笔机一个</span></p>";
 // 生成一个Pattern,同时编译一个正则表达式
 Pattern pattern = Pattern.compile("<(.[^>]*)>");
 //匹配字符串
 Matcher matcher = pattern.matcher(skuName);
 //把符合正则的数据替换成""
 skuName=matcher.replaceAll("");
 System.out.println("替换以后结果=====》"+skuName);
}

输出结果:

替换以后结果=====》铅笔机一个

说明:

1.Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式。

2.Pattern.matcher(String regex,CharSequence input)是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串。

来源:https://changle.blog.csdn.net/article/details/78225068

标签:java,Matcher,头尾,字符串
0
投稿

猜你喜欢

  • Java数据结构之线索化二叉树的实现

    2022-03-16 15:25:34
  • 面试官:Java中new Object()到底占用几个字节

    2022-02-09 19:04:00
  • winform去掉右上角关闭按钮的方法

    2023-02-11 16:31:40
  • Java接入支付宝授权第三方登录的完整步骤

    2023-01-05 01:13:54
  • Qt串口通信开发之QSerialPort模块简单使用方法与实例

    2023-03-23 03:25:45
  • 关于springboot配置druid数据源不生效问题(踩坑记)

    2021-08-04 13:46:08
  • Android zygote启动流程详解

    2023-09-13 07:44:12
  • 利用C#实现在Word中更改字体颜色

    2021-12-25 12:14:09
  • MAC配置java+jmeter环境变量过程解析

    2021-09-30 00:16:23
  • Flutter路由传递参数及解析实现

    2023-06-22 11:48:45
  • Android批量修改文件格式/文件名的神操作分享

    2022-07-13 00:31:53
  • C#连接ODBC数据源的方法

    2023-04-20 07:30:33
  • 详解ViewBinding用法

    2023-07-01 21:38:41
  • Android Service生命周期详解

    2022-03-21 13:13:55
  • Java中transient关键字的详细总结

    2021-12-11 03:19:33
  • Java的锁机制:synchronized和CAS详解

    2023-03-18 16:04:00
  • java 数据结构并查集详解

    2023-01-22 03:52:24
  • SpringBoot整合mybatis-plus进阶详细教程

    2023-11-27 05:13:12
  • python 转换 Javascript %u 字符串为python unicode的代码

    2022-07-28 03:15:14
  • c# 如何更简单的使用Polly

    2022-10-24 11:27:46
  • asp之家 软件编程 m.aspxhome.com