国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java正則表達(dá)式匹配替換大括號(hào)變量${}和替換${}變量的值

這篇具有很好參考價(jià)值的文章主要介紹了java正則表達(dá)式匹配替換大括號(hào)變量${}和替換${}變量的值。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

java正則表達(dá)式替換“$ {}”特殊字符并還原,以及java正則表達(dá)式替換${}變量為變量的值這兩種操作的代碼示例。

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class VarReplaceTest {
    private static final String LEFT = "_LEFTBRACE_";
    private static final String RIGHT = "_RIGHTBRACE_";
    private static Map<String, String> valueMap = new HashMap<>();
    static {
        Calendar cal = Calendar.getInstance();
        String today = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
        cal.add(Calendar.DATE, -1);
        String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
        valueMap.put("today", today);
        valueMap.put("yesterday", yesterday);
    }

    public static void main(String[] args) {
        String sql = "create table pssdb.HEALTH_${yesterday} as select * FROM pssdb.ORG_TREE_${today} T WHERE T.set_day='${yesterday}' ;";
        String replaceStr = replaceBrace(sql);
        System.out.println(replaceStr);
        System.out.println(recoverBrace(replaceStr));
        System.out.println(replaceVarValue(sql));
    }

    public static String replaceBrace(String sql) {
        String pattern = "(\\$\\{(.+?)\\})";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(sql);
        StringBuffer sb = new StringBuffer();
        while (m.find()) {
            String key = m.group();
//            System.out.print(key);
//            System.out.print("  -> ");
            if (key != null && key.length() > 3) {
                String value = key.replace("${", LEFT).replace("}", RIGHT);//;
//                System.out.print(value);
                m.appendReplacement(sb, value == null ? "" : value);
            }
        }
        m.appendTail(sb);
        return sb.toString();
    }

    /**
     * 還原${}
     *
     * @param name
     * @return
     */
    public static String recoverBrace(String name) {
        if (name == null) {
            return null;
        }
        //轉(zhuǎn)義字符要使用\\轉(zhuǎn)義或使用"\\\\" +
        String recoverStr = name.replaceAll(LEFT, "\\${").replaceAll(RIGHT, "}");//;
        return recoverStr;
    }


    public static String replaceVarValue(String sql) {
        String pattern = "\\$\\{(.+?)\\}";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(sql);
        StringBuffer sb = new StringBuffer();
        while (m.find()) {
        // 取第一個(gè)group
            String key = m.group(1);
            String value = valueMap.get(key);//;
            m.appendReplacement(sb, value == null ? "" : value);
        }
        m.appendTail(sb);
        return sb.toString();
    }

}

正則表達(dá)式還是非常有用的, 可以耐心看下定義,多嘗試下。

正則表達(dá)式定義

正則表達(dá)式(regular expression)描述了一種字符串匹配的模式,可以用來檢查一個(gè)串是否含有某種子串、將匹配的子串做替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。

列目錄時(shí), dir .txt或ls .txt中的.txt就不是一個(gè)正則表達(dá)式,因?yàn)檫@里與正則式的*的含義是不同的。
  正則表達(dá)式是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。正則表達(dá)式作為一個(gè)模板,將某個(gè)字符模式與所搜索的字符串進(jìn)行匹配。

普通字符

由所有那些未顯式指定為元字符的打印和非打印字符組成。這包括所有的大寫和小寫字母字符,所有數(shù)字,所有標(biāo)點(diǎn)符號(hào)以及一些符號(hào)。

非打印字符 字符 含義

\cx  匹配由x指明的控制字符。例如, \cM 匹配一個(gè) Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個(gè)原義的 'c' 字符。 
\f  匹配一個(gè)換頁符。等價(jià)于 \x0c 和 \cL。 
\n  匹配一個(gè)換行符。等價(jià)于 \x0a 和 \cJ。 
\r  匹配一個(gè)回車符。等價(jià)于 \x0d 和 \cM。 
\s  匹配任何空白字符,包括空格、制表符、換頁符等等。等價(jià)于 [ \f\n\r\t\v]。 
\S  匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。 
\t  匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI。 
\v  匹配一個(gè)垂直制表符。等價(jià)于 \x0b 和 \cK。

特殊字符

所謂特殊字符,就是一些有特殊含義的字符,如上面說的".txt"中的,簡單的說就是表示任何字符串的意思。如果要查找文件名中有*的文件,則需要對(duì)*進(jìn)行轉(zhuǎn)義,即在其前加一個(gè)\。ls *.txt。正則表達(dá)式有以下特殊字符。

特別字符 說明 
$ 匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,請(qǐng)使用 \$。 
( ) 標(biāo)記一個(gè)子表達(dá)式的開始和結(jié)束位置。子表達(dá)式可以獲取供以后使用。要匹配這些字符,請(qǐng)使用 \( 和 \)。 

* 匹配前面的子表達(dá)式零次或多次。要匹配 * 字符,請(qǐng)使用 \*。 

+ 匹配前面的子表達(dá)式一次或多次。要匹配 + 字符,請(qǐng)使用 \+。 
  . 匹配除換行符 \n之外的任何單字符。要匹配 .,請(qǐng)使用 \。 
  [  標(biāo)記一個(gè)中括號(hào)表達(dá)式的開始。要匹配 [,請(qǐng)使用 \[。 
  ? 匹配前面的子表達(dá)式零次或一次,或指明一個(gè)非貪婪限定符。要匹配 ? 字符,請(qǐng)使用 \?。 
  \ 將下一個(gè)字符標(biāo)記為或特殊字符、或原義字符、或向后引用、或八進(jìn)制轉(zhuǎn)義符。例如, 'n' 匹配字符 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("。 
  ^ 匹配輸入字符串的開始位置,除非在方括號(hào)表達(dá)式中使用,此時(shí)它表示不接受該字符集合。要匹配 ^ 字符本身,請(qǐng)使用 \^。 
  { 標(biāo)記限定符表達(dá)式的開始。要匹配 {,請(qǐng)使用 \{。 
  | 指明兩項(xiàng)之間的一個(gè)選擇。要匹配 |,請(qǐng)使用 \|。 

  構(gòu)造正則表達(dá)式的方法和創(chuàng)建數(shù)學(xué)表達(dá)式的方法一樣。也就是用多種元字符與操作符將小的表達(dá)式結(jié)合在一起來創(chuàng)建更大的表達(dá)式。正則表達(dá)式的組件可以是單個(gè)的字符、字符集合、字符范圍、字符間的選擇或者所有這些組件的任意組合。

限定符

限定符用來指定正則表達(dá)式的一個(gè)給定組件必須要出現(xiàn)多少次才能滿足匹配。有*或+或?或{n}或{n,}或{n,m}共6種。
*、+和?限定符都是貪婪的,因?yàn)樗鼈儠?huì)盡可能多的匹配文字,只有在它們的后面加上一個(gè)?就可以實(shí)現(xiàn)非貪婪或最小匹配。
   正則表達(dá)式的限定符有:

字符  描述 
*  匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}。 
+  匹配前面的子表達(dá)式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價(jià)于 {1,}。 
?  匹配前面的子表達(dá)式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價(jià)于 {0,1}。 
{n}  n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個(gè) o。 
{n,}  n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價(jià)于 'o+'。'o{0,}' 則等價(jià)于 'o*'。 
{n,m}  m 和 n 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o。'o{0,1}' 等價(jià)于 'o?'。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。 

定位符

用來描述字符串或單詞的邊界,^和$分別指字符串的開始與結(jié)束,\b描述單詞的前或后邊界,\B表示非單詞邊界。不能對(duì)定位符使用限定符。

選擇

用圓括號(hào)將所有選擇項(xiàng)括起來,相鄰的選擇項(xiàng)之間用|分隔。但用圓括號(hào)會(huì)有一個(gè)副作用,是相關(guān)的匹配會(huì)被緩存,此時(shí)可用?:放在第一個(gè)選項(xiàng)前來消除這種副作用。
   其中?:是非捕獲元之一,還有兩個(gè)非捕獲元是?=和?!,這兩個(gè)還有更多的含義,前者為正向預(yù)查,在任何開始匹配圓括號(hào)內(nèi)的正則表達(dá)式模式的位置來匹配搜索字符串,后者為負(fù)向預(yù)查,在任何開始不匹配該正則表達(dá)式模式的位置來匹配搜索字符串。

后向引用

對(duì)一個(gè)正則表達(dá)式模式或部分模式兩邊添加圓括號(hào)將導(dǎo)致相關(guān)匹配存儲(chǔ)到一個(gè)臨時(shí)緩沖區(qū)中,所捕獲的每個(gè)子匹配都按照在正則表達(dá)式模式中從左至右所遇到的內(nèi)容存儲(chǔ)。存儲(chǔ)子匹配的緩沖區(qū)編號(hào)從 1 開始,連續(xù)編號(hào)直至最大 99 個(gè)子表達(dá)式。每個(gè)緩沖區(qū)都可以使用 ‘\n’ 訪問,其中 n 為一個(gè)標(biāo)識(shí)特定緩沖區(qū)的一位或兩位十進(jìn)制數(shù)。
   可以使用非捕獲元字符 ‘?:’, ‘?=’, or ‘?!’ 來忽略對(duì)相關(guān)匹配的保存。

各種操作符的運(yùn)算優(yōu)先級(jí)

相同優(yōu)先級(jí)的從左到右進(jìn)行運(yùn)算,不同優(yōu)先級(jí)的運(yùn)算先高后低。各種操作符的優(yōu)先級(jí)從高到低如下:

操作符  描述 
\  轉(zhuǎn)義符 
(), (?:), (?=), []  圓括號(hào)和方括號(hào) 
*, +, ?, {n}, {n,}, {n,m}  限定符 
^, $, \anymetacharacter  位置和順序 
|  “或”操作 

全部符號(hào)解釋

字符   描述
\  將下一個(gè)字符標(biāo)記為一個(gè)特殊字符、或一個(gè)原義字符、或一個(gè) 向后引用、或一個(gè)八進(jìn)制轉(zhuǎn)義符。例如,'n' 匹配字符 "n"。'\n' 匹配一個(gè)換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。 
^  匹配輸入字符串的開始位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之后的位置。 
$  匹配輸入字符串的結(jié)束位置。如果設(shè)置了RegExp 對(duì)象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。 
*  匹配前面的子表達(dá)式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價(jià)于{0,}。 
+  匹配前面的子表達(dá)式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價(jià)于 {1,}。 
?  匹配前面的子表達(dá)式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價(jià)于 {0,1}。 
{n}  n 是一個(gè)非負(fù)整數(shù)。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個(gè) o。 
{n,}  n 是一個(gè)非負(fù)整數(shù)。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價(jià)于 'o+'。'o{0,}' 則等價(jià)于 'o*'。 
{n,m}  m 和 n 均為非負(fù)整數(shù),其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個(gè) o。'o{0,1}' 等價(jià)于 'o?'。請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格。 
?  當(dāng)該字符緊跟在任何一個(gè)其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面時(shí),匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對(duì)于字符串 "oooo",'o+?' 將匹配單個(gè) "o",而 'o+' 將匹配所有 'o'。 
.  匹配除 "\n" 之外的任何單個(gè)字符。要匹配包括 '\n' 在內(nèi)的任何字符,請(qǐng)使用象 '[.\n]' 的模式。 
(pattern)  匹配 pattern 并獲取這一匹配。所獲取的匹配可以從產(chǎn)生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括號(hào)字符,請(qǐng)使用 '\(' 或 '\)'。 
(?:pattern)  匹配 pattern 但不獲取匹配結(jié)果,也就是說這是一個(gè)非獲取匹配,不進(jìn)行存儲(chǔ)供以后使用。這在使用 "或" 字符 (|) 來組合一個(gè)模式的各個(gè)部分是很有用。例如, 'industr(?:y|ies) 就是一個(gè)比 'industry|industries' 更簡略的表達(dá)式。 
(?=pattern)  正向預(yù)查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個(gè)非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預(yù)查不消耗字符,也就是說,在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始。 
(?!pattern)  負(fù)向預(yù)查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。這是一個(gè)非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預(yù)查不消耗字符,也就是說,在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始 
x|y  匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。 
[xyz]  字符集合。匹配所包含的任意一個(gè)字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 
[^xyz]  負(fù)值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 
[a-z]  字符范圍。匹配指定范圍內(nèi)的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內(nèi)的任意小寫字母字符。 
[^a-z]  負(fù)值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內(nèi)的任意字符。 
\b  匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 
\B  匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 
\cx  匹配由 x 指明的控制字符。例如, \cM 匹配一個(gè) Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個(gè)原義的 'c' 字符。 
\d  匹配一個(gè)數(shù)字字符。等價(jià)于 [0-9]。 
\D  匹配一個(gè)非數(shù)字字符。等價(jià)于 [^0-9]。 
\f  匹配一個(gè)換頁符。等價(jià)于 \x0c 和 \cL。 
\n  匹配一個(gè)換行符。等價(jià)于 \x0a 和 \cJ。 
\r  匹配一個(gè)回車符。等價(jià)于 \x0d 和 \cM。 
\s  匹配任何空白字符,包括空格、制表符、換頁符等等。等價(jià)于 [ \f\n\r\t\v]。 
\S  匹配任何非空白字符。等價(jià)于 [^ \f\n\r\t\v]。 
\t  匹配一個(gè)制表符。等價(jià)于 \x09 和 \cI。 
\v  匹配一個(gè)垂直制表符。等價(jià)于 \x0b 和 \cK。 
\w  匹配包括下劃線的任何單詞字符。等價(jià)于'[A-Za-z0-9_]'。 
\W  匹配任何非單詞字符。等價(jià)于 '[^A-Za-z0-9_]'。 
\xn  匹配 n,其中 n 為十六進(jìn)制轉(zhuǎn)義值。十六進(jìn)制轉(zhuǎn)義值必須為確定的兩個(gè)數(shù)字長。例如,'\x41' 匹配 "A"。'\x041' 則等價(jià)于 '\x04' & "1"。正則表達(dá)式中可以使用 ASCII 編碼。. 
\num  匹配 num,其中 num 是一個(gè)正整數(shù)。對(duì)所獲取的匹配的引用。例如,'(.)\1' 匹配兩個(gè)連續(xù)的相同字符。 
\n  標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)向后引用。如果 \n 之前至少 n 個(gè)獲取的子表達(dá)式,則 n 為向后引用。否則,如果 n 為八進(jìn)制數(shù)字 (0-7),則 n 為一個(gè)八進(jìn)制轉(zhuǎn)義值。 
\nm  標(biāo)識(shí)一個(gè)八進(jìn)制轉(zhuǎn)義值或一個(gè)向后引用。如果 \nm 之前至少有 nm 個(gè)獲得子表達(dá)式,則 nm 為向后引用。如果 \nm 之前至少有 n 個(gè)獲取,則 n 為一個(gè)后跟文字 m 的向后引用。如果前面的條件都不滿足,若 n 和 m 均為八進(jìn)制數(shù)字 (0-7),則 \nm 將匹配八進(jìn)制轉(zhuǎn)義值 nm。 
\nml  如果 n 為八進(jìn)制數(shù)字 (0-3),且 m 和 l 均為八進(jìn)制數(shù)字 (0-7),則匹配八進(jìn)制轉(zhuǎn)義值 nml。 
\un  匹配 n,其中 n 是一個(gè)用四個(gè)十六進(jìn)制數(shù)字表示的 Unicode 字符。例如, \u00A9 匹配版權(quán)符號(hào) (?)。 

參考:
https://blog.csdn.net/fly_duck/article/details/108733966
https://blog.csdn.net/az44yao/article/details/119520605文章來源地址http://www.zghlxwxcb.cn/news/detail-434469.html

到了這里,關(guān)于java正則表達(dá)式匹配替換大括號(hào)變量${}和替換${}變量的值的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java 正則表達(dá)式【非貪婪匹配、格式驗(yàn)證、反向引用、API】

    非貪婪匹配的元字符是問號(hào) ?? 當(dāng)此字符跟在任何其他限定符(*、+、?、{n}、{m}、{n,m})之后,匹配模式是 \\\"非貪心的\\\"。非貪心的意思就是每次匹配搜索到的盡可能短的字符串, 可以是0個(gè) 。 對(duì)比貪婪匹配和非貪婪匹配 貪婪匹配 輸出結(jié)果: 非貪婪匹配 輸出結(jié)果: 對(duì)字符串

    2024年02月13日
    瀏覽(24)
  • 正則表達(dá)式-分組括號(hào)以及捕獲分組

    正則表達(dá)式-分組括號(hào)以及捕獲分組

    在java正則表達(dá)式中,( )是分組的意思,每組都有一個(gè)組號(hào) 只看左括號(hào),不看右括號(hào),按照左括號(hào)的順序,從左往右,依次為第一組,第二組,第三組等等,如圖: 根據(jù)左括號(hào)分成了三組 捕獲分組,非捕獲分組 可以獲取某一組中的內(nèi)容反復(fù)使用 規(guī)則: 正則表達(dá)式內(nèi)部使

    2024年01月22日
    瀏覽(27)
  • 【正則表達(dá)式】正則表達(dá)式常見匹配模式

    模式 描述 w 匹配字母數(shù)字及下劃線 W 匹配非字母數(shù)字下劃線 s 匹配任意空白字符,等價(jià)于 [tnrf]. S 匹配任意非空字符 d 匹配任意數(shù)字,等價(jià)于 [0-9] D 匹配任意非數(shù)字 A 匹配字符串開始 Z 匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串 z 匹配字符串結(jié)

    2024年02月09日
    瀏覽(40)
  • SED正則表達(dá)式中[方括號(hào)]的特殊處理

    今天被這個(gè)方括號(hào)懵暈了,特此記錄 例如: 去除輸入字符串“1[2.3]4[ab,c]”中的所有方括號(hào)和逗號(hào): $ echo \\\"1[2.3]4[ab,c]\\\"|sed -e \\\"s/[,][]//g\\\" 1[2.3]4[ab,c] ? It doesn\\\'t work! 原因:Regular Expressions The right-square-bracket (?\\\']\\\'?) shall lose its special meaning and represent itself in a bracket expression if it oc

    2024年02月14日
    瀏覽(26)
  • 正則表達(dá)式中的方括號(hào)[]有什么用?

    在正則表達(dá)式中,方括號(hào) [] 是用于定義字符集合的元字符。它在正則表達(dá)式中有以下作用: 匹配字符集合中的任意一個(gè)字符 :方括號(hào)中列出的字符,表示在這個(gè)位置可以匹配這些字符中的任意一個(gè)。例如, [abc] 將匹配任意一個(gè)字符是 “a”、“b” 或 “c” 的位置。 指定字

    2024年02月14日
    瀏覽(26)
  • 正則表達(dá)式 (用于靈活匹配文本的表達(dá)式)

    目錄 . * 用于匹配任意單個(gè)字符,除了換行符。 例如使用正則表達(dá)式 a.b, 它可以匹配aab、acb、a#b 用于匹配前一個(gè)字符零次或多次。 例如,使用正則表達(dá)式 ab*c ,它可以匹配 \\\"ac\\\"、\\\"abc\\\"、\\\"abbc\\\",因?yàn)?b* 表示匹配零個(gè)或多個(gè)字符 \\\"b\\\"。所以,這個(gè)表達(dá)式可以匹配 \\\"ac\\\"(零個(gè) \\\"b\\\"),

    2024年01月16日
    瀏覽(33)
  • 棧的OJ題(逆波蘭表達(dá)式求值+括號(hào)匹配+出入棧順序匹配+最小棧)

    棧的OJ題(逆波蘭表達(dá)式求值+括號(hào)匹配+出入棧順序匹配+最小棧)

    平時(shí)使用是算式是中綴表達(dá)式 逆波蘭表達(dá)式是一種后綴表達(dá)式,算符寫在后面。 優(yōu)點(diǎn): 1.去掉括號(hào)后表達(dá)式無歧義 2.適合用棧操作運(yùn)算:遇到數(shù)字則入棧;遇到算符則取出棧頂兩個(gè)數(shù)字進(jìn)行計(jì)算,并將結(jié)果壓入棧中 3.中綴轉(zhuǎn)后綴:加上括號(hào),將對(duì)應(yīng)的運(yùn)算符放在括號(hào)外 1.題

    2024年02月08日
    瀏覽(33)
  • Latex中正則表達(dá)式替換

    Latex中正則表達(dá)式替換

    文章目錄 前言 一、使用步驟 二、常用正則表達(dá)式 三、具體使用例子 本文主要是根據(jù)自己平時(shí)修改latex中不規(guī)范的格式,遇到的一些需要重復(fù)修改的一類問題,用正則表達(dá)式來提高修改效率。 例如:文中出現(xiàn)轉(zhuǎn)置符號(hào),應(yīng)該使用命令top。正確示例:A^{top};錯(cuò)誤示例:A^{T}。

    2023年04月22日
    瀏覽(22)
  • java中通過split方法使用分號(hào)分割,使用正則表達(dá)式匹配不識(shí)別單引號(hào)中的分號(hào)

    在Java中,使用split()方法可以通過指定正則表達(dá)式作為分隔符來拆分字符串。如果你想忽略單引號(hào)內(nèi)的分號(hào),可以使用以下代碼: 在這個(gè)正則表達(dá)式中,它使用反向零寬斷言 (?!...) 和順序零寬斷言 (?=...) 來限制分隔符的匹配位置,以確保只有在非單引號(hào)內(nèi)部的位置才會(huì)進(jìn)行分

    2024年02月08日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包