java Matcher匹配頭尾截取替換字符串的案例
在java 編程中,我們常常有這樣的需求:需要將一段字符串內(nèi)的特定字符串,按照一定規(guī)則查找出來或替換,比如匹配文本開頭規(guī)則和結(jié)束規(guī)則。
以下就是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 匹配頭尾截取替換字符串
* 待替換內(nèi)容:
* 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("原內(nèi)容:"+str);
for (String foundkey : foundKeys){
str = str.replace(foundkey, foundkey.replace("${cot.","{{cot.").replace("}", "}}").replace("-","_"));
}
System.out.println("替換后:"+str);
}
}
}
補充知識:JAVA正則表達式 Pattern和Matcher,用正則替換對應的內(nèi)容
需求:
過濾樣式,比如:
<p><span style="font-size: larger">鉛筆機一個</span></p>
過濾后結(jié)果= 鉛筆機一個
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);
//把符合正則的數(shù)據(jù)替換成""
skuName=matcher.replaceAll("");
System.out.println("替換以后結(jié)果=====》"+skuName);
}
輸出結(jié)果:
替換以后結(jié)果=====》鉛筆機一個
說明:
1.Pattern類用于創(chuàng)建一個正則表達式,也可以說創(chuàng)建一個匹配模式,它的構(gòu)造方法是私有的,不可以直接創(chuàng)建,但可以通過Pattern.complie(String regex)簡單工廠方法創(chuàng)建一個正則表達式。
2.Pattern.matcher(String regex,CharSequence input)是一個靜態(tài)方法,用于快速匹配字符串,該方法適合用于只匹配一次,且匹配全部字符串。
以上這篇java Matcher匹配頭尾截取替換字符串的案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring的嵌套事務(Propagation.NESTED)到底是個啥案例代碼講解
SavePoint是數(shù)據(jù)庫事務中的一個概念,?可以將整個事務切割為不同的小事務,可以選擇將狀態(tài)回滾到某個小事務發(fā)生時的樣子,本文通過案例代碼講解Spring的嵌套事務(Propagation.NESTED)到底是個啥,感興趣的朋友跟隨小編一起看看吧2023-01-01
解決springboot+shiro 權(quán)限攔截失效的問題
這篇文章主要介紹了解決springboot+shiro 權(quán)限攔截失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
SpringBoot使用WebSocket實現(xiàn)前后端交互的操作方法
springboot使用websocket有兩種方式,一種是實現(xiàn)簡單的websocket,另外一種是實現(xiàn)STOMP協(xié)議,本篇講述如何使用springboot實現(xiàn)簡單的websocket,需要的朋友可以參考下2022-04-04
Java實現(xiàn)文件和base64流的相互轉(zhuǎn)換功能示例
這篇文章主要介紹了Java實現(xiàn)文件和base64流的相互轉(zhuǎn)換功能,涉及Java文件讀取及base64 轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
詳談ThreadLocal-單例模式下高并發(fā)線程安全
這篇文章主要介紹了ThreadLocal-單例模式下高并發(fā)線程安全,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
springboot+gradle 構(gòu)建多模塊項目的步驟
這篇文章主要介紹了springboot+gradle 構(gòu)建多模塊項目的步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
Idea之沒有網(wǎng)絡的情況下創(chuàng)建SpringBoot項目的方法實現(xiàn)
本文主要介紹了Idea之沒有網(wǎng)絡的情況下創(chuàng)建SpringBoot項目的方法實現(xiàn),文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-09-09

