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

在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)是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串。

以上这篇java Matcher匹配头尾截取替换字符串的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java使用正则表达式检索、替换String中特定字符和正则表达式的一切

    引言 String这个对于程序原来说一定是最熟悉不过的,很多时候我们都习惯去使用String的原生方法去完成查找字符串.替换.删除,而正则表达式由于略显苦涩的语法常常被人忽略,其实很多时候使用正则表达式可以提高不少性能和节省资源. 一.正则表达式简述 正则表达式正则表达是Java中比较矛盾的知识点,因为使用起来可以很简单也可以相当地有难度,但是对于字符串操作来说应用得当则事半功倍,字符串查找,搜索,匹配,替换等等,正则表达式无所不能.而所谓正则表达式本质就是一个字符串(这个字符串按照一定的语法和

  • JAVA中正则表达式匹配,替换,查找,切割的方法

    正则表达式的查找;主要是用到String类中的split(); String str; str.split();方法中传入按照什么规则截取,返回一个String数组 常见的截取规则: str.split("\\.")按照.来截取 str.split(" ")按照空格截取 str.split("cc+")按照c字符来截取,2个c或以上 str.split((1)\\.+)按照字符串中含有2个字符或以上的地方截取(1)表示分组为1 截取的例子; 按照

  • Java正则多字符串匹配替换

    Java中使用也比较简单:1. 编译正则表达式的字面值得到对应的模式Pattern对象: 2. 创建匹配给定输入与此模式的匹配器Matcher: 3. 通过匹配器对象执行操作,匹配器对象的方法很丰富,方法之间组合使用更加强大. 复制代码 代码如下: public static void main(String[] args) {     //被替换关键字的的数据源     Map<String,String> tokens = new HashMap<String,String>(

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

    在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 匹配头

  • java中简单的截取分割字符串实例

    目前整理出来三种形式: 可根据实际需要选择使用 String userNameUrl; int beginIndex = 0; int endIndex = 0; userNameUrl = "454512@hongri@4944115455d9591b274648a06303d910de"; /** * 方法一: */ beginIndex = userNameUrl.indexOf("@")+1; endIndex = userNameUrl.lastIndex

  • Java基于正则表达式实现的替换匹配文本功能【经典实例】

    本文实例讲述了Java基于正则表达式实现的替换匹配文本功能.分享给大家供大家参考,具体如下: package replaceDemo; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank * 替换匹配的文本 */ public class ReplaceDemo { public static void main(String[] args) { // 创建一个正则表达式模式

  • Java正则表达式(匹配、切割、替换、获取)等方法

    正则表达式:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号来表示一些代码操作,这样就简化书写,主要是学习一些特殊符号的使用 好处:可以简化对字符串的复杂操作. 弊端:符号定义越多,正则越长,阅读性越差 具体操作: 1.匹配:String matches方法 用规则匹配所有的字符串,只要有一个不符合,则匹配结束. 2.切割:String sqlit(); 3.替换:replaceAll(); 4.获取:将字符串中的符合规则的子串取出. 操作步骤: 首先,将正则表大式封装成

  • Java使用正则表达式进行匹配且对匹配结果逐个替换

    前言: Java使用正则表达式进行匹配,并对匹配结果逐个进行替换 下面代码示例,是将 下划线 替换成随机生成的 uuid public class TestUtil { public static void main(String[] args) { // 待匹配替换文本 String html = "姓名:______;年龄:______;性别:______;"; // 正则表达式 String regex = "_+"; Pattern pattern = Pa

  • java正则匹配读取txt文件提取特定开头和结尾的字符串

    目录 前言 一.使用FileInputStream处理 二.使用正则开始匹配 1.匹配规则书写 2.pattern 代码案例 总结 前言 前天刚入职的算法同事,过来问我怎么提取txt文件中的数据,我一看这还不简单,结果…搞了好久. 正则不用真的会忘记,写篇博客增加一下记忆吧. 需求:提取txt文件中,有特定开头(双引号) ,特定结尾(双引号) 的中间的数据,打印出来 一.使用FileInputStream处理 FileInputStream:是java中的字节输入流,就是通过字节的形式进行读取

  • C#正则表达式匹配与替换字符串功能示例

    本文实例讲述了C#正则表达式匹配与替换字符串功能.分享给大家供大家参考,具体如下: 事例一:\w+=>[A-Za-z1-9_],\s+=>任何空白字符,()=>捕获 string text = @"public string testMatchObj string s string match "; string pat = @"(\w+)\s+(string)"; // Compile the regular expression. Regex

  • JS基于正则截取替换特定字符之间字符串操作示例

    本文实例讲述了JS基于正则截取替换特定字符之间字符串操作.分享给大家供大家参考,具体如下: 示例1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"&

  • Python 字符串操作实现代码(截取/替换/查找/分割)

    Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. 复制代码 代码如下: # 例1:字符串截取str = '12345678'print str[0:1]>> 1   # 输出str位置0开始到位置1以前的字符print str[1:6]  >> 23456   # 输出str位置1开始到位置6以前的字符num = 18str = '0000' + str(num) # 合并字符串pr

  • js 截取或者替换字符串中的数字实现方法

    在js操作表格时,我们经常会需要得到或者修改name中的下标,如:name="cust[1]/custName"; 替换:name.replace(/[\d]+/,num); //num为你需要替换成的数字变量 获取:name.match(/[\d]+/). 获取多个:name.match(/[\d]+/g). 以上这篇js 截取或者替换字符串中的数字实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

随机推荐