Java使用正則表達(dá)式進(jìn)行匹配且對(duì)匹配結(jié)果逐個(gè)替換
前言:
Java使用正則表達(dá)式進(jìn)行匹配,并對(duì)匹配結(jié)果逐個(gè)進(jìn)行替換
下面代碼示例,是將 下劃線 替換成隨機(jī)生成的 uuid
public class TestUtil { public static void main(String[] args) { // 待匹配替換文本 String html = "姓名:______;年齡:______;性別:______;"; // 正則表達(dá)式 String regex = "_+"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); StringBuffer stringBuffer = new StringBuffer(); // 將html中的下劃線替換為該input標(biāo)簽 while (matcher.find()) { // 匹配區(qū)間 String substring = html.substring(matcher.start(), matcher.end()); // 生成隨機(jī)id,作為唯一標(biāo)識(shí) String uuid = IdUtil.simpleUUID(); // 將下劃線替換為uuid matcher.appendReplacement(stringBuffer, matcher.group().replace(substring, uuid)); } // 最終結(jié)果追加到尾部 matcher.appendTail(stringBuffer); // 最終完成替換后的結(jié)果 System.out.println(stringBuffer); } }
輸出結(jié)果:
姓名:9b1abd66584940d0afa88d2a4f396cc0;
年齡:550161321a634b1abcd88c77e67f685a;
性別:d7714c1870bb44b8b5a7c61f35ed190e;
匹配模式 | |
---|---|
Pattern.CANON_EQ | 啟用規(guī)范等價(jià)。指定此標(biāo)志后,當(dāng)且僅當(dāng)其完整規(guī)范分解匹配時(shí),兩個(gè)字符才可視為匹配 |
Pattern.CASE_INSENSITIVE | 啟用不區(qū)分大小寫的匹配 |
Pattern.COMMENTS | 模式中允許空白和注釋。 此模式將忽略空白和在結(jié)束行之前以 # 開頭的嵌入式注釋。 通過嵌入式標(biāo)志表達(dá)式 (?x) 也可以啟用注釋模式 |
Pattern.DOTALL | 啟用點(diǎn)陣模式。在 dotall 模式下,表達(dá)式 . 匹配任何字符,包括行終止符。默認(rèn)情況下, 此表達(dá)式與行終止符不匹配。Dotall 模式也可以通過嵌入式標(biāo)志表達(dá)式啟用(?s)。(s 是“單行”模式的助記符,這在 Perl 中也被使用)。 |
Pattern.LITERAL | 啟用模式的文字解析。當(dāng)指定此標(biāo)志時(shí),指定模式的輸入字符串將被視為文字字符序列。輸入序列中的元字符或轉(zhuǎn)義序列將沒有特殊意義。當(dāng)與此標(biāo)志一起使用時(shí),標(biāo)志 CASE_INSENSITIVE 和 UNICODE_CASE 保留對(duì)匹配的影響。其他旗幟變得多余。沒有嵌入的標(biāo)志字符用于啟用文字解析。 |
Pattern.MULTILINE | 啟用多行模式。在多行模式中,表達(dá)式^和$匹配恰好在之前或之前分別是行終止符或輸入序列的結(jié)尾。 默認(rèn)情況下,這些表達(dá)式僅在整個(gè)輸入序列的開頭和結(jié)尾匹配。也可以通過嵌入式標(biāo)志表達(dá)式啟用多模式模式(?m)。 |
Pattern.UNICODE_CASE | 啟用 Unicode 感知的大小寫折疊。當(dāng)指定此標(biāo)志時(shí),不區(qū)分大小寫的匹配(由 CASE_INSENSITIVE 標(biāo)志啟用)以與 Unicode 標(biāo)準(zhǔn)一致的方式完成。 默認(rèn)情況下,不區(qū)分大小寫的匹配假定僅匹配 US-ASCII 字符集中的字符。Unicode 感知案例折疊也可以通過嵌入式標(biāo)志表達(dá)式啟用(?u)。 指定此標(biāo)志可能會(huì)造成性能損失。 |
Pattern.UNIX_LINES | 啟用 UNIX 線路模式。在這種模式下,只有'\n' 行結(jié)束在行為的認(rèn)可.,^ 和 $。 UNIX 線路模式也可以通過嵌入式標(biāo)志表達(dá)式啟用(?d)。 |
Matcher方法 | |
---|---|
appendReplacement() | 追加和替換,將當(dāng)前匹配子串替換為指定字符串,并且將替換后的子串以及其之前到上次匹配子串之后的字符串段添加到一個(gè) StringBuffer 對(duì)象里 |
appendTail() | 將最后一次匹配工作后剩余的字符串添加到一個(gè) StringBuffer 對(duì)象里 |
到此這篇關(guān)于Java使用正則表達(dá)式進(jìn)行匹配且對(duì)匹配結(jié)果逐個(gè)替換的文章就介紹到這了,更多相關(guān)Java正則表達(dá)式匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java正則表達(dá)式匹配字符串并提取中間值的方法實(shí)例
- java如何用正則表達(dá)式匹配與提取字符串
- Java正則表達(dá)式循環(huán)匹配字符串方式
- 正則表達(dá)式匹配${key}并在Java中使用的詳細(xì)方法
- Java正則表達(dá)式匹配不到結(jié)果的解決
- java正則表達(dá)式匹配所有數(shù)字的案例
- Java正則表達(dá)式如何匹配特定html標(biāo)簽內(nèi)的內(nèi)容
- Java替換中使用正則表達(dá)式實(shí)現(xiàn)中間模糊匹配的方法
- Java基于正則表達(dá)式實(shí)現(xiàn)查找匹配的文本功能【經(jīng)典實(shí)例】
- Java使用正則表達(dá)式(regex)匹配中文實(shí)例代碼
相關(guān)文章
教你在 IntelliJ IDEA 中使用 VIM插件的詳細(xì)教程
這篇文章主要介紹了在 IntelliJ IDEA 中使用 VIM的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼
這篇文章主要介紹了Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04springboot 異步調(diào)用的實(shí)現(xiàn)方法
這篇文章主要介紹了springboot 異步調(diào)用的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04在Java的Struts框架下進(jìn)行web編程的入門教程
這篇文章主要介紹了在Java的Struts框架下進(jìn)行web編程的入門教程,需要的朋友可以參考下2015-11-11在Java中避免NullPointerException的解決方案
這篇文章主要介紹了在Java中避免NullPointerException的解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04基于Springboot執(zhí)行多個(gè)定時(shí)任務(wù)并動(dòng)態(tài)獲取定時(shí)任務(wù)信息
這篇文章主要為大家詳細(xì)介紹了基于Springboot執(zhí)行多個(gè)定時(shí)任務(wù)并動(dòng)態(tài)獲取定時(shí)任務(wù)信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04Java動(dòng)態(tài)規(guī)劃篇之線性DP的示例詳解
這篇文章主要通過幾個(gè)例題為大家詳細(xì)介紹一些Java動(dòng)態(tài)規(guī)劃中的線性DP,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下2022-11-11Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案
這篇文章主要介紹了Spring注解配置AOP導(dǎo)致通知執(zhí)行順序紊亂解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10