<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks

    目錄

    正則表達式介紹
    匹配模式

    字符子集
    行結束符
    分組和引用
    Unicode支持


    正則表達式語法參考
    1. 字符
    2. 邏輯操作符
    3. 向后引用
    4. 邊界元字符
    5. 重復指示符
    6. 字符子集
    7. 預定義子集(元字符)
    8. 擴展子集(元字符)
    9. 擴展中文子集(元字符)
    10. POSIX字符子集(只適用于ASCII)
    11. Unicode塊和分類

    替換表達式
    替換表達式
    1. 特殊字符
    2. 自定義替換表

    匹配模式

    匹配模式指得是正則表達式引擎將以何種模式匹配字符串。
    模式名稱
    啟用,禁用
    缺省啟用
    說明
    UNIX_LINES
    (?d)啟用,(?-d)禁用

    啟用Unix行模式。
    在此模式下,只有 '\n'被認為是行結束符。它會影響., ^, 和 $ 的行為。

    CASE_INSENSITIVE
    (?i)啟用,(?-i)禁用

    啟用忽略大小寫模式。
    缺省時,忽略大小寫模式只會影響 ASCII字符的匹配。 而Unicode范圍的忽略大小寫匹配需要通過 UNICODE_CASE 標志與本標志聯(lián)合使用。
    啟用此模式會影響匹配性能。

    COMMENTS
    (?x)啟用,(?-x)禁用

    允許空格和注釋出現(xiàn)在正則表達式中。
    在此模式下,空格被忽略,以#開始的單行注釋被忽略。
    MULTILINE
    (?m)啟用,(?-m)禁用

    啟用多行模式。
    In multiline mode the expressions ^ and $ match just after or just before, respectively, a line terminator or the end of the input sequence. By default these expressions only match at the beginning and the end of the entire input sequence.

    DOTALL
    (?s)啟用,(?-s)禁用

    讓.可以匹配行結束符。
    在此模式下,元字符.可以匹配行結束符。缺省不允許如此匹配。


    UNICODE_CASE
    (?u)啟用,(?-u)禁用

    Enables Unicode-aware case folding.
    When this flag is specified then case-insensitive matching, when enabled by the CASE_INSENSITIVE flag, is done in a manner consistent with the Unicode Standard. By default, case-insensitive matching assumes that only characters in the US-ASCII charset are being matched. 啟用此模式會影響性能。

    CANON_EQ
    (?c)啟用,(?-c)禁用

    Enables canonical equivalence.
    When this flag is specified then two characters will be considered to match if, and only if, their full canonical decompositions match. The expression "a\u030A", for example, will match the string "?" when this flag is specified. By default, matching does not take canonical equivalence into account.
    啟用此模式會影響性能。



    字符子集

    字符子集可以含有別的字符子集,并且可以通過聯(lián)合操作符(缺省)和交集操作符(&&)實現(xiàn)組合。聯(lián)合操作符表示某個子集匹配它的子子集所匹配的任意字符。交集操作符表明某個字符子集只匹配它的子子集都匹配的字符。
    字符子集所能夠有的操作符的優(yōu)先級如下,從高到低:
    1. 轉義符\x
    2. 成組符 [...]
    3. 區(qū)間符 a-z
    4. 聯(lián)合符 [a-e][i-u]
    5. 交集符 [a-z&&[aeiou]]
    注意:在字符子集[]內(nèi)部的語法根本不同于正則表達式其它部分中的語法。例如,在字符子集內(nèi)部,正則表達式 . 失去了它原有的含義,而是成了一個匹配.的元字符。

    行結束符

    行結束符是一個或兩個字符序列,用以表明輸入字符序列中一行的結束。下面的字符被認為是行結束符:
    • 一個換行符('\n')。
    • 一個回車符加上一個換行符("\r\n")。
    • 一個單獨的回車符('\r')。
    • 代表下一行的字符('\u0085')。
    • 行分隔符('\u2028'),Unicode中被定義。
    • 一個分段符('\u2029),Unicode中被定義。
    如果 UNIX_LINES 模式被啟用,則只有換行符被認為是行結束符。
    如果 MULTILINE 模式被啟用,。

    分組和引用

    字符分組以它們的左括號的出現(xiàn)順序來排序。例如在表達式((A)(B(C))),有四個分組:
    1. ((A)(B(C)))
    2. (A)
    3. (B(C))
    4. (C)
    第0組永遠表示表達式本身。
    分組采用這樣的命名方式,是因為,在一次匹配過程中,正則表達式會被匹配多次。以前的匹配子序列有可能在將來被使用;或者在匹配結束時,程序有可能需要重新獲得所有匹配的子字符序列。
    對于正則表達式中的某個分組而言,永遠只保留最后匹配的字符序列。如果對某個分組匹配嘗試失敗,則會保留上次匹配成功的字符序列。例如,對于正則表達式(a(b)?)+而言,字符序列"aba",將會讓分組2匹配的字符序列為"b"。
    以(?開始的分組,將不會計入分組數(shù)目,也不會被后續(xù)匹配所引用。

    Unicode支持

    本正則表達式匹配引擎的實現(xiàn)遵循了《Unicode技術報告:Unicode正則表達式指南》,實現(xiàn)了該指南的第二層所需的功能,但是在細微處有一些簡單語法修改。
    Unicode塊(Block)和分類(Category)通過\p和\P通配苻表示。\p{prop}匹配含有prop的輸入序列,而\P{prop}匹配不含有prop的輸入序列。Unicode塊通過前綴In表示,如\p{InMongolian}。Unicode分類通過可選的前綴Is表示,因此\p{L}和\p{IsL}都代表Unicode分類 letters。Unicode塊和分類都可以在正則表達式子集外部和內(nèi)部使用。
    目前支持的Unicode塊和分類是《Unicode標準,第三版》中所指定的塊和分類。 Unicode塊名稱在《Unicode 字符數(shù)據(jù)庫》的第14章被定義,文件名稱叫Blocks-3.txt,但是名稱中的空格被去掉了。例如"Basic Latin"成了"BasicLatin"。無論是標準化的還是非標準化的分類,都在該標準的第88頁的第4-5表中被全部定義。

    與Perl 5正則表達式語法對比

    [TBD]


    正則表達式參考



    字符

    正則表達式字符串
    匹配的字符串
    X
    字符X,包括 CJK ExtB 區(qū)漢字
    \\
    反斜杠\
    \0n 八進制0n代表的字符(0<=n<=7)
    \0nn
    八進制0nn代表的字符(0<=n<=7)
    \0mnn
    八進制0mnn代表的字符(0<=m<=3,0<=n<=7)
    \xhh
    十六進制 0xhh所代表的字符
    \uhhhh
    十六進制 0xhhhh所代表的字符。注意,目前尚不支持CJK ExtB區(qū)漢字。
    \t
    制表符('\u0009')
    \n
    換行('\u000A')
    \r
    回車('\u000D')
    \a
    響鈴符('\u0007')
    \e
    取消符Escape('\001B')
    \cx
    x所代表的控制字符

    邏輯操作符

    正則表達式字符串
    匹配的字符串
    XY
    X后面跟隨Y
    X|Y
    X或者Y
    (X)
    X作為分組表達式

    向后引用

    正則表達式字符串
    匹配的字符串
    \n
    n個匹配的分組

    邊界元字符

    邊界字符
    匹配的字符串
    ^
    行首
    $
    行末
    \b 字符邊界
    \B
    非字符邊界
    \A
    輸入流的開始
    \G
    上次匹配的結束處
    \Z
    輸入流的結束,或者是最后一個行結束符,參見行結束符
    \z
    輸入流的結束

    重復指示符

    正則表達式字符串
    匹配的字符串
    X?
    X重復一次,或者不重復
    X*
    X重復0次或多次
    X+
    X重復1次或多次
    X{n}
    X重復n次,不多也不少。
    X{n,}
    X至少重復n次
    X{n,m}
    X至少重復n次,至多重復m次。
    注:X{n,m}、?、*、+方式可以聯(lián)合使用。

    字符子集

    正則表達式字符串子集
    匹配的字符串
    組合方式
    [abc]
    字符a,b或c,包括 CJK ExtB 區(qū)漢字
    簡單子集
    [^abc]
    任意非a,b或c的字符。
    排除
    [a-zA-Z] 從a到z,或者A到Z,包含a,z,A,Z。
    區(qū)間
    [a-d[m-p]]
    從a到d,或者m到p,等于[a-dm-p]。
    聯(lián)合
    [a-z&&[def]]
    d,e或者f。
    交集
    [a-z&&[^bc]]
    從a到z,除了b和c,等于[ad-z]
    扣除
    [a-z&&[^m-p]]
    從a到z,并且不包括從m到p,等于[a-lq-z]
    扣除

    預定義子集(元字符)

    邊界字符
    匹配的字符串
    .
    任意字符,可能匹配行結束符。
    \d
    數(shù)字[0-9]
    \D 非數(shù)字[^0-9]
    \s
    空白符[ \t\n\x0B\f\r]
    \S
    非空白符[^\s]
    \w
    單詞符,包含有字母和數(shù)字[a-zA-Z_0-9]
    \W
    非單詞符,不包含有字母和數(shù)字。

    擴展子集(元字符)

    正則表達式字符串
    匹配的字符串




    擴展中文子集(元字符)

    名稱
    塊名稱(\p{InXXX})
    簡化通配符
    標準Unicode塊,或者漢字列表
    任意雙字節(jié)字符(漢字或全角符號)
    \p{InQuqnJiao}
    \E
    任意由GBK表示的漢字,不包括GB18030擴展部分,
    以及CJK ExtB區(qū)的漢字。
    任意單字節(jié)字符
    \p{InFQuanJiao}
    \~E
    任意單字節(jié)字符。
    任意全角ASCII字符
    \p{InQJAscii}
    \H
    標準HalfwidthandFullwidthForms塊
    任意收錄在BIG5碼集中的雙字節(jié)字符
    \p{InBig5}
    \I
    Big5可編碼雙字節(jié)字符
    匹配未收錄在BIG5碼集中的雙字節(jié)字符 \p{InFBig5}
    \~I
    非Big5可編碼雙字節(jié)字符
    匹配任意漢字(不包括符號)
    \p{InHanziOrCJKExtB}
    \X
    任意漢字,包括GB18030擴展部分。
    匹配任意漢字(不包括符號)
    \p{InHanzi}
    \M
    任意漢字,不包括GB18030擴展部分。
    匹配非漢字的雙字節(jié)字符
    \p{InFHanzi}
    \~M
    任意非漢字的雙字節(jié)字符,
    包括GB18030擴展部分。
    地支字符
    \p{InDiZhi}
    \U
    子丑寅卯辰巳午未申酉戌亥
    匹配收錄在GB碼集中的雙字節(jié)字符
    \p{InGB}
    \g
    收錄在GB碼集中的雙字節(jié)字符,
    不包括GB18030擴展部分。
    匹配非收錄在GB碼集中的雙字節(jié)字符
    \p{InFGB}
    \~g
    未收錄在GB碼集中的雙字節(jié)字符,
    不包括GB18030擴展部分。
    匹配收錄在GBK碼集中的雙字節(jié)字符
    \p{InGBK}
    \h
    收錄在GBK碼集中的雙字節(jié)字符,
    不包括GB18030擴展部分。
    匹配非收錄在GBK碼集中的雙字節(jié)字符
    \p{InFGBK}
    \~h
    未收錄在GBK碼集中的雙字節(jié)字符,
    不包括GB18030擴展部分。
    大寫希臘字母
    \p{InDaXila}
    \K
    ΑΒΓΔΕΖΗΘΙΚΛΜΝ
    ΞΟΠΡΣΤΥΦΧΨΩ
    日文片假名
    \p{InPianJia}
    \j
    標準Katakana塊
    日文平假名
    \p{InPingJia}
    \J
    標準Hiragana塊
    小寫希臘字母
    \p{InXiaoXila}
    \k
    αβγδεζηθικλμν
    ξοπρστυφχψω
    數(shù)學符號
    \p{InMathe}
    \m
    ±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙
    ∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴
    中文數(shù)字
    \p{InCnDigit}
    \i
    〇一二三四五六七八九十百千萬億兆吉京
    大寫中文數(shù)字
    \p{InDaCnDigit}
    \N
    零壹貳叁肆伍陸柒捌玖拾佰仟萬億兆吉京
    全角標點符號
    \p{InQJBiaoDian}
    \o
    、。·ˉˇ¨〃々—~‖…‘’“”〔〕
    〈〉《》「」『』〖〗【】!"'(),
    -.:;<=>?[]{|}`﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚
    ﹛﹜﹝﹞︵︶︹︺︿﹀︽︾﹁﹂﹃﹄
    ︻︼︷︸︱︳︴
    小寫俄文字母
    \p{InXiaoEWen}
    \l
    абвгдеёжзийклмн
    опрстуфхцчшщъыьэюя
    大寫俄文字母
    \p{InDaEWen}
    \R
    АБВГДЕЁЖЗИЙКЛМНО
    ПРСТУФХЦЧШЩЪЫЬЭЮЯ
    中文序號
    \p{InCnSN}
    \q
    ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ
    ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ
    再加上Unicode標準EnclosedAlphanumerics塊
    天干字符
    \p{InTianGan}
    \T
    甲乙丙丁戊己庚辛壬癸
    豎排標點符號
    \p{InSPBiaoDian}
    \V
    ︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴
    拼音字符
    \p{InPinyin}
    \y
    āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡ
    GBK -> 0xA8A1- 0xA8C0
    只是Unicode標準LatinExtended-A塊的一部分。
    注音字符
    \p{InZhuyin}
    \Y
    標準Bopomofo塊
    制表字符
    \p{InZhiBiao}
    \C
    標準BoxDrawing塊。
    經(jīng)檢查發(fā)現(xiàn) textpro 的算法含有部分非標
    準Unicode制表符:“∟∣≒≦≧⊿═”。

    POSIX字符子集(只適用于ASCII)

    正則表達式字符串
    匹配的字符串
    \p{Lower}
    小寫字母[a-z]
    \p{Upper}
    大寫字母[A-Z]
    \p{ASCII}
    所有的ASCII字符[\x00-\x7F]
    \p{Alpha}
    大小寫字母[\p{Lower}\p{Upper}]
    \p{Digit}
    數(shù)字[0-9]
    \p{Alnum}
    字母數(shù)字符,包含大小寫字母和數(shù)字[\p{Alpha}\p{Digit}]
    \p{Punct}
    標點符號,!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~之一。
    \p{Graph}
    可顯示字符[\p{Alnum}\p{Punct}]
    \p{Print}
    可打印字符[\p{Graph}]
    \p{Blank}
    空格或者制表符[ \t]
    \p{Cntrl}
    控制字符[\x00-\x1F\x7F
    \p{XDigit}
    十六進制數(shù)字[0-9a-fA-F]
    \p{Space}
    空白符[ \t\n\x0B\f\r]

    Unicode塊和分類


    中文名稱(摘自Word XP)
    代碼區(qū)域
    BasicLatin
    基本拉丁語
    \u0000-\u007F
    Latin-1Supplement
    拉丁語-1
    \u0080-\u00FF
    LatinExtended-A
    拉丁語擴充-A
    \u0100-\u017F
    LatinExtended-Bound
    拉丁語擴充-B
    \u0180-\u024F
    IPAExtensions
    國際音標擴充
    \u0250-\u02AF
    SpacingModifierLetters
    進格的修飾字符
    \u02B0-\u02FF
    CombiningDiacriticalMarks
    組合用發(fā)音符
    \u0300-\u036F
    Greek
    基本希臘語
    \u0370-\u03FF
    Cyrillic
    西里爾語
    \u0400-\u04FF
    Armenian

    \u0530-\u058F
    Hebrew

    \u0590-\u05FF
    Arabic

    \u0600-\u06FF
    Syriac

    \u0700-\u074F
    Thaana

    \u0780-\u07BF
    Devanagari

    \u0900-\u097F
    Bengali

    \u0980-\u09FF
    Gurmukhi

    \u0A00-\u0A7F
    Gujarati

    \u0A80-\u0AFF
    Oriya

    \u0B00-\u0B7F
    Tamil

    \u0B80-\u0BFF
    Telugu

    \u0C00-\u0C7F
    Kannada

    \u0C80-\u0CFF
    Malayalam

    \u0D00-\u0D7F
    Sinhala

    \u0D800-\uDFF
    Thai

    \u0E00-\u0E7F
    Lao

    \u0E80-\u0EFF
    Tibetan
    藏語
    \u0F00-\u0FFF
    Myanmar

    \u1000-\u109F
    Georgian

    \u10A0-\u10FF
    HangulJamo

    \u1100-\u11FF
    Ethiopic

    \u1200-\u137F
    Cherokee

    \u13A0-\u13FF
    UnifiedCanadianAboriginalSyllabics

    \u1400-\u167F
    Ogham

    \u1680-\u169F
    Runic

    \u16A0-\u16FF
    Khmer

    \u1780-\u17FF
    Mongolian
    蒙古語
    \u1800-\u18AF
    LatinExtendedAdditional

    \u1E00-\u1EFF
    GreekExtended

    \u1F00-\u1FFF
    GeneralPunctuation
    廣義標點
    \u2000-\u206F
    SuperscriptsandSubscripts

    \u2070-\u209F
    CurrencySymbols
    貨幣符號
    \u20A0-\u20CF
    CombiningMarksforSymbols

    \u20D0-\u20FF
    LetterlikeSymbols
    類似字母的符號
    \u2100-\u214F
    NumberForms
    數(shù)字形式
    \u2150-\u218F
    Arrows
    箭頭
    \u2190-\u21FF
    MathematicalOperators
    數(shù)學運算符
    \u2200-\u22FF
    MiscellaneousTechnical
    零雜技術用符號
    \u2300-\u23FF
    ControlPictures

    \u2400-\u243F
    OpticalCharacterRecognition

    \u2440-\u245F
    EnclosedAlphanumerics
    帶括號的字母數(shù)字
    \u2460-\u24FF
    BoxDrawing
    制表符
    \u2500-\u257F
    BlockElements
    方塊圖形
    \u2580-\u259F
    GeometricShapes
    幾何圖形
    \u25A0-\u25FF
    MiscellaneousSymbols
    零雜丁貝符(示意符等)
    \u2600-\u26FF
    Dingbats

    \u2700-\u27BF
    BraillePatterns

    \u2800-\u28FF
    CJKRadicalsSupplement

    \u2E80-\u2EFF
    KangxiRadicals

    \u2F00-\u2FDF
    IdeographicDescriptionCharacters

    \u2FF0-\u2FFF
    CJKSymbolsandPunctuation
    CJK符號和標點
    \u3000-\u303F
    Hiragana
    平假名
    \u3040-\u309F
    Katakana
    片假名
    \u30A0-\u30FF
    Bopomofo
    注音
    \u3100-\u312F
    HangulCompatibilityJamo

    \u3130-\u318F
    Kanbun

    \u3190-\u319F
    BopomofoExtended
    擴展注音
    \u31A0-\u31BF
    EnclosedCJKLettersandMonths
    帶括號的CJK字母及月份
    \u3200-\u32FF
    CJKCompatibility
    CJK兼容字符
    \u3300-\u33FF
    CJKUnifiedIdeographsExtensionA
    CJK統(tǒng)一漢字擴展-A
    \u3400-\u4dBF
    CJKUnifiedIdeographs
    CJK統(tǒng)一漢字
    \u4E00-\u9fAF
    YiSyllables

    \uA000-\uA48F
    YiRadicals

    \uA490-\uA4CF
    HangulSyllables

    \uAC00-\uD7A3
    HighSurrogates

    \uD800-\uDB7F
    HighPrivateUseSurrogates

    \uDB80-\uDBFF
    LowSurrogates

    \uDC00-\uDFFF
    PrivateUse
    專用區(qū)
    \uE000-\uF8FF
    CJKCompatibilityIdeographs
    CJK兼容漢字
    \uF900-\uFAFF
    AlphabeticPresentationForms

    \uFB00-\uFB4F
    ArabicPresentationForms-A

    \uFB50-\uFDFF
    CombiningHalfMarks

    \uFE20-\uFE2F
    CJKCompatibilityForms
    CJK兼容形式
    \uFE30-\uFE4F
    SmallFormVariants
    小寫變體
    \uFE50-\uFE6F
    ArabicPresentationForms-Bound

    \uFE70-\ufeFF
    Specials

    \uFFF0-\uFFFF
    HalfwidthandFullwidthForms
    半形及全形字符
    \uFF00-\uFFEF


    分類
    全稱
    說明
    Cn

    UNASSIGNED
    Lu

    UPPERCASE_LETTER
    Ll

    LOWERCASE_LETTER
    Lt

    TITLECASE_LETTER
    Lm

    MODIFIER_LETTER
    Lo

    OTHER_LETTER
    Mn

    NON_SPACING_MARK
    Me

    ENCLOSING_MARK
    Mc

    COMBINING_SPACING_MARK
    Nd

    DECIMAL_DIGIT_NUMBER
    Nl

    LETTER_NUMBER
    No

    OTHER_NUMBER
    Zs

    SPACE_SEPARATOR
    Zl

    LINE_SEPARATOR
    Zp

    PARAGRAPH_SEPARATOR
    Cc

    CNTRL
    Cf

    FORMAT
    Co

    PRIVATE_USE
    Cs

    SURROGATE
    Pd

    DASH_PUNCTUATION
    Ps

    START_PUNCTUATION
    Pe

    END_PUNCTUATION
    Pc

    CONNECTOR_PUNCTUATION
    Po

    OTHER_PUNCTUATION
    Sm

    MATH_SYMBOL
    Sc

    CURRENCY_SYMBOL
    Sk

    MODIFIER_SYMBOL
    So

    OTHER_SYMBOL
    L

    LETTER
    M

    MARK
    N

    NUMBER
    Z

    SEPARATOR
    C

    CONTROL
    P

    PUNCTUATION
    S

    SYMBOL
    LD

    LETTER_OR_DIGIT
    L1

    Latin-1
    all

    ALL
    ASCII

    ASCII
    Alnum

    字母數(shù)字(0-9,a-z,A-Z)
    Alpha

    字母(a-z,A-Z)
    Blank

    空格和制表符(' '|\t)
    Cntrl

    控制字符,不可打印
    Digit

    數(shù)字(0-9)
    Graph

    可打印且可視字母(例如空格' '是可打印的但不是可視字母,而 `a' 兩者都是。)
    Lower

    小寫字母
    Print

    可打印字母(非控制字符)
    Punct

    標符號(字母、數(shù)字、控制、空白符以外的字母),如:!@#$%}{<>,./?[]等等。
    Space

    空白符(' ',\t,0x09,0x0A,0x0B,0x0C,0x0D,0x20)
    Upper

    大寫字母
    XDigit

    十六進制數(shù)字(0-9,a-f, A-F)





    替換表達式

    特殊字符
    特殊字符介紹
    描述
    \n
    換行
    \b
    向前刪除一個字符。當這個字符位于替換串之首時,將刪除匹配串之前的一個字符。若匹配串位于行首,將使匹配串所在行與前一行相合并。
    \d
    向后刪除一個字符。當這個字符位于替換串之末時,將刪除匹配串之后的一個字符。若匹配串位于行末,將使匹配串所在行與下一行相合并。
    \e
    插入一個ESC字符
    \t
    插入一個TAB字符
    \n
    n代表查找正則表達式中的子表達式(組)。\1代表第一個子表達式,\2代表第二個子表達式,依次類推。\0代表整個匹配到的字符串。
    \v
    大寫下一個字母
    \U
    全部大寫以后的字母,直到碰到其它指示符為止。
    \l
    小寫下一個字母
    \L
    全部小寫以后的字母,直到碰到其它指示符為止。
    \E
    取消所有的字母大小寫指示符。


    自定義替換表

    在查找/替換中使用自定義替換表
    有的時候,上述簡單的自定義替換功能是不夠的。例如,用戶可能希望只把出現(xiàn)在括號內(nèi)的源串替換為目標串。這種文本處理可以通過在查找/替換中使用自定義替換表來解決。

    在查找/替換功能中使用自定義替換表的替換函數(shù)是\Tn,其中n是0-9的數(shù)字, 注意n為0表示第10張?zhí)鎿Q表。如果略去n,其效果相當于\T1,即使用第一張?zhí)鎿Q表。例如要把所有放在方括號中的漢字替換為拼音,可以查找“\[(\E)\]”,替換為“\T{\1}”。即把第一個子表達式的匹配內(nèi)容按自定義替換表轉換。注意,如果\T函數(shù)的參數(shù)不在替換表的源串中,\T函數(shù)的結果與源串相同,即不做任何變換。

    有些情況下,用戶可能希望只使用替換表的一部分內(nèi)容。還是以拼音為例,前面給出的替換表中包含了拼音的音調,如果在替換時不希望加上這些音調數(shù)字,可以使用“過濾”功能。所謂過濾,其實是用一個正則表達式去分析替換表的目標串,并把其中的某個子表達式取出來。

    使用“過濾”時,在“設置自定義替換表”對話框中,點“過濾”按鈕,在彈出的對話框中填入一個正則表達式。再以拼音為例,表達式可以寫為“(\p{Alpha}+)(\d)”,其中第一對括號中的是不含音調的拼音,第二對括號是音調。在調用\T函數(shù)時,JTextPro會在目標串中查找這個正則表達式。但是如何把其中的子表達式取出來呢?\T函數(shù)還有一個可選的下標,取第n個子表達式的值就寫作\T{...}[n]。所以,把放在方括號中的漢字替換為不帶調的拼音,可以查找“\[(\E)\]”,替換為“\T{\1}[1]”
    posted on 2012-09-10 23:15 HUIKK 閱讀(1350) 評論(1)  編輯  收藏 所屬分類: Regular Exp

    評論

    # re: java 正則 2014-05-23 22:09 zuidaima
    java正則代碼下載:http://www.zuidaima.com/share/search.htm?key=%E6%AD%A3%E5%88%99%0A  回復  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 久久久久久国产精品免费免费 | 亚洲一级片在线观看| 亚洲日本中文字幕天堂网| 皇色在线视频免费网站| 免费91最新地址永久入口| 欧洲乱码伦视频免费国产| 亚洲а∨天堂久久精品9966| 日本久久久久亚洲中字幕| 国产AⅤ无码专区亚洲AV| 国产免费观看黄AV片| 大地资源二在线观看免费高清| 毛片在线全部免费观看| 国产精品美女免费视频观看| 真正全免费视频a毛片| 亚洲中文字幕无码爆乳| 亚洲人成免费电影| 久久精品国产精品亚洲毛片| 亚洲成AV人片在线观看无码| 国产亚洲美女精品久久久2020| 亚洲国产成人精品女人久久久 | 亚洲伊人久久大香线蕉在观| 久久久久久亚洲AV无码专区| 久久精品国产亚洲香蕉| 国产亚洲精品美女久久久| 久久影视国产亚洲| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲av无码乱码在线观看野外| 天天看片天天爽_免费播放| 免费无码又爽又刺激聊天APP| 亚色九九九全国免费视频| 思思re热免费精品视频66| 无码区日韩特区永久免费系列| 18pao国产成视频永久免费| 人妻丰满熟妇无码区免费 | 亚洲精品中文字幕乱码三区| 亚洲日本乱码在线观看| 国产精品亚洲一区二区三区在线| 亚洲日韩av无码| 亚洲短视频男人的影院| 亚洲自偷自拍另类图片二区| 亚洲精品国产第1页|