欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java使用正則表達(dá)式進(jìn)行匹配且對(duì)匹配結(jié)果逐個(gè)替換

 更新時(shí)間:2022年09月23日 09:38:40   作者:_燈火闌珊處???????  
這篇文章主要介紹了Java使用正則表達(dá)式進(jìn)行匹配且對(duì)匹配結(jié)果逐個(gè)替換,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言:

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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論