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