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