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正則表達(dá)式 Pattern和Matcher,用正則替換對應(yīng)的內(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,同時編譯一個正則表達(dá)式 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)建一個正則表達(dá)式,也可以說創(chuàng)建一個匹配模式,它的構(gòu)造方法是私有的,不可以直接創(chuàng)建,但可以通過Pattern.complie(String regex)簡單工廠方法創(chuàng)建一個正則表達(dá)式。
2.Pattern.matcher(String regex,CharSequence input)是一個靜態(tài)方法,用于快速匹配字符串,該方法適合用于只匹配一次,且匹配全部字符串。
以上這篇java Matcher匹配頭尾截取替換字符串的案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring的嵌套事務(wù)(Propagation.NESTED)到底是個啥案例代碼講解
SavePoint是數(shù)據(jù)庫事務(wù)中的一個概念,?可以將整個事務(wù)切割為不同的小事務(wù),可以選擇將狀態(tài)回滾到某個小事務(wù)發(fā)生時的樣子,本文通過案例代碼講解Spring的嵌套事務(wù)(Propagation.NESTED)到底是個啥,感興趣的朋友跟隨小編一起看看吧2023-01-01java實現(xiàn)excel導(dǎo)出合并單元格的步驟詳解
這篇文章主要介紹了java實現(xiàn)excel導(dǎo)出合并單元格,通過使用Apache POI庫,我們可以方便地創(chuàng)建Excel文件、填充數(shù)據(jù)、合并單元格和導(dǎo)出Excel文件,需要的朋友可以參考下2023-04-04解決springboot+shiro 權(quán)限攔截失效的問題
這篇文章主要介紹了解決springboot+shiro 權(quán)限攔截失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09SpringBoot使用WebSocket實現(xiàn)前后端交互的操作方法
springboot使用websocket有兩種方式,一種是實現(xiàn)簡單的websocket,另外一種是實現(xiàn)STOMP協(xié)議,本篇講述如何使用springboot實現(xiàn)簡單的websocket,需要的朋友可以參考下2022-04-04Java實現(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-09springboot+gradle 構(gòu)建多模塊項目的步驟
這篇文章主要介紹了springboot+gradle 構(gòu)建多模塊項目的步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05Idea之沒有網(wǎng)絡(luò)的情況下創(chuàng)建SpringBoot項目的方法實現(xiàn)
本文主要介紹了Idea之沒有網(wǎng)絡(luò)的情況下創(chuàng)建SpringBoot項目的方法實現(xiàn),文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09