1. 程式人生 > 程式設計 >java Matcher匹配頭尾擷取替換字串的案例

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匹配頭尾擷取替換字串的案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。