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

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

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

    thinking

    one platform thousands thinking

    Java正則表達式

    小知識:{} 定義了一個范圍  [] 定義了一個字符類 () 定義了一個組
    *前面出現0次以上   + 前面匹配一次以上 ?前面出現0次或一次


    1).字符:
    x------字符x
    ""-----反斜杠
    "0n----十進制數 (0 <= n <= 7)
    "0nn---十進制數0nn (0 <= n <= 7)
    "0mnn--十進制數0mnn (0 <= m <= 3,0 <= n <= 7)
    "xhh---十六進制數 0xhh
    ""uhhh-十六進制數 0uhhh
    "t-----制表符 ('"u0009') 2)
    "n-----換行符 ('"u000A')
    "r----- 回車符 ('"u000D')
    "e----- esc符號 ('"u001B')
    "cx---- x 對應的控制符
    2).字符類:
    [abc] a, b, 或 c (簡單字符串)
    [^abc] 除了 a, b, 或 c 之外的任意字符(否定)
    [a-zA-Z] 從a 到 z 或 從A 到 Z(包括a,z,A,Z)(范圍)
    [a-d[m-p]] 從a 到 d, 或 從m 到 p: [a-dm-p] (并集)
    [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](子集)
    3).預定義字符序列 :
    . 任意字符 (也可能不包括行結束符)
    "d 數字: [0-9]
    "D 非數字: [^0-9]
    "s 空字符: [ "t"n"x0B"f"r](A whitespace character)
    "S 非空字符: [^"s]
    "w 單字字符: [a-zA-Z_0-9]
    "W 非單字字符: [^"w]
    4).POSIX 字符類 (US-ASCII only) :
    "p{Lower} 小寫字母字符: [a-z]
    "p{Upper} 大寫字母字符:[A-Z]
    "p{ASCII} 所有 ASCII:["x00-"x7F]
    "p{Alpha} 單個字母字符:["p{Lower}"p{Upper}]
    "p{Digit} 十進制數: [0-9]
    "p{Alnum} 單個字符:["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} 十六進制數: [0-9a-fA-F]
    "p{Space} 空字符: [ "t"n"x0B"f"r]
    5). Unicode 字符類:
    "p{InGreek} 希臘語種的字符 (simple block)
    "p{Lu} 大寫字母 (simple category)
    "p{Sc} 貨幣符號
    "P{InGreek} 除希臘語種字符外的任意字符 (negation)
    ["p{L}&&[^"p{Lu}]] 除大寫字母外的任意字符 (subtraction)
    6). 邊界匹配器:
    ^ 一行的開始
    $ 一行的結束
    "b 單詞邊界
    "B 非單詞邊界
    "A 輸入的開始
    "G 當前匹配的結束
    "Z The end of the input but for the final terminator, if any
    "z 輸入的結束
    6).Greedy quantifiers 貪婪匹配量詞:
    X? X不出現或出現一次 (特殊字符"?"與{0,1}是相等的)
    X* X不出現或出現多次 (特殊字符"*"與{0,}是相等的)
    X+ X至少出現一次 (特殊字符"+"與 {1,}是相等的)
    X{n} X出現n次
    X{n,} X至少出現n次
    X{n,m} X至少出現n次,但不會超過m次
    7).Reluctant quantifiers:
    X?? X, 不出現或出現一次
    X*? X, 不出現或出現多次
    X+? X, 至少出現一次
    X{n}? X, 出現n次
    X{n,}? X, 至少出現n次
    X{n,m}? X, 至少出現n次,但不會超過m次
    8).Possessive quantifiers:
    X?+ X, 不出現或出現一次
    X*+ X, 不出現或出現多次
    X++ X, 至少出現一次
    X{n}+ X, 出現n次
    X{n,}+ X, 至少出現n次
    X{n,m}+ X, 至少出現n次,但不會超過m次
    9).邏輯運算符:
    XY Y跟在X后面
    X|Y X 或 Y
    (X) X, as a capturing group
    10).反向引用:
    "n Whatever the nth capturing group matched
    11).Quotation:
    " 引用后面的字符
    "Q 引用所有的字符直到 "E 出現
    "E 結束以 "Q 開始的引用
    12).Special constructs (non-capturing):
    (?:X) X, as a non-capturing group
    (?idmsux-idmsux) 匹配標志開關
    (?idmsux-idmsux:X) X, as a non-capturing group with the given flags on
    (?=X) X, via zero-width positive lookahead - off
    (?!X) X, via zero-width negative lookahead
    (? <=X) X, via zero-width positive lookbehind
    (?(? > X) X, as an independent, non-capturing group



    1).Backslashes, escapes, and quoting
    反 斜杠字符('"')用來轉義,就像上面的表中定義的那樣,如果不這樣做的話可能會產生 歧義。因此,表達式""匹配 單個反斜杠,表達式"{匹配單個左花括號。 如果把反斜杠放在沒有定義轉移構造的任何字母符號前面都會發生錯誤,這些將被保留 到以后的正則表達式中擴展。反斜杠可以放在任何 非字母符號前面,即使它沒有定義轉義構造也不會發生錯誤。 在java語言規范中指出,在java代碼中自符串中的反斜杠是必要的,不管用于Unicode轉 義,還是用于普通的字符轉義。因此, 為了保持正則表達式的完整性,在java字符串中要寫兩個反斜杠。例如,在正則表達式 中字符'"b'代表退格,'""b'則代表單詞邊界。'"(hello")'是無效的,并且會產生編譯 時錯誤,你必須用 '""(hello"")'來匹配(hello)。
    2).Character Classes
    字符類可以出現在其他字符類內部,并且可以由并操作符和與操作符(&&)組成。并集操 作結果是,其中的任意字符,肯定在至少其中操作數中至少出現過一次。 交集的結果包括各個操作數中同時出現的任意字符。
    字符類操作符的優先級如下:(從高到低)
    1 文字轉義 "x
    2 集合 [...]
    3 范圍 a-z
    4 并集 [a-e][i-u]
    5 交集 [a-z&&[aeiou]]
    請注意各個字符類的有效字符集。例如,在字符類中,正則表達式.失去了它的特別含義 ,而-變成了元字符的范圍指示。
    3).Line terminators
    行結束符是一個或兩個字符序列,用來標識輸入字符序列的一行的結束。下列都被認為 是行結束符:
    換行符 ('"n'),
    回車換行符 (""r"n"),
    回車符 ('"r'),
    下一行 ('"u0085'),
    行分隔符 ('"u2028'), 或段分隔符 ('"u2029).
    如果激活了 UNIX_LINES 模式,唯一的行結束符就是換行符。
    除非你指定了 DOTALL 標志,否則正則表達式.匹配任何字符,只有行結束符除外。
    確省情況時,在整個輸入隊列中,正則表達式^和$忽略行結束符,只匹配開始和結束。
    如果激活了 MULTILINE 模式,則^匹配輸入的開始和所有行結束符之后,除了整個輸入 的結束。
    在MULTILINE 模式下,$匹配所有行結束符之前,和整個輸入的結束。

    4).Groups and capturing
    分組捕獲通過從左到右的順序,根據括號的數量類排序。例如,在表達式((A)(B(C)))中,有四個組:
    1     ((A)(B(C)))
    2     (A)
    3     (B(C))
    4     (C)
    0組代表整個表達式。
    分 組捕獲之所以如此命名,是因為在匹配過程中,輸入序列的每一個與分組匹配的子序 列都會被保存起來。通過向后引用,被捕獲的子序列可以在后面的表達式中被再次使用。而且,在匹配操作結束以后還可以通過匹配器重新找到。與一個分組關聯的 被捕獲到的輸入通常是被保存的最近與這個分組相匹配的隊列的子隊列。如果一個分組被第二次求值,即使失敗,它的上一次被捕獲的值也會被保存起來。
    例如,表達式(a(b)?)+匹配"aba","b"設為子分組。在開始匹配的時候,以前被捕獲的輸入都將被清除。以(?開始的分組是完全的,無需捕獲的分組不會捕獲任何文本,也不會計算分組總數。

    5).Unicode support

    Unicode Technical Report #18: Unicode Regular Expression Guidelines通過輕微的語法改變實現了更深層次的支持。
    在java代碼中,像"u2014 這樣的轉義序列,java語言規范中?3.3提供了處理方法 。
    為了便于使用從文件或鍵盤讀取的unicode轉義字符,正則表達式解析器也直接實現了這種轉移。因此,字符串""u2014"與"""u2014"雖然不相等,但是編譯進同一種模式,可以匹配十六進制數0x2014。
    在 Perl中,unicode塊和分類被寫入"p,"P。如果輸入有prop屬性,"p{prop}將會匹配, 而"P{prop}將不會匹配。塊通過前綴In指定,作為在nMongolian之中。分類通過任意的前綴Is指定: "p{L} 和 "p{IsL} 都引用 Unicode 字母。塊和分類可以 被使用在字符類的內部或外部。
     
    The Unicode Standard, Version 3.0指出了支持的塊和分類。塊的名字在第14章和 Unicode CharacterDatabase中的 Blocks-3.txt 文件定義,但空格被剔除了。例如Basic Latin"變成了  "BasicLatin"。分類的名字被定義在88頁,表4-5。

    posted on 2010-10-11 16:41 lau 閱讀(587) 評論(0)  編輯  收藏 所屬分類: J2SE

    主站蜘蛛池模板: 在线成人精品国产区免费| 成年人在线免费看视频| 亚洲毛片基地日韩毛片基地| 一个人免费观看视频www| 无忧传媒视频免费观看入口| 亚洲AV无码一区二区三区DV | 114级毛片免费观看| 亚洲欧美日韩国产成人| 亚洲国产另类久久久精品小说| 真人做人试看60分钟免费视频| 免费人成大片在线观看播放电影| 亚洲成a人片77777老司机| 在线成人a毛片免费播放| 伊人免费在线观看| 亚洲精品无码成人片久久不卡| 亚洲爆乳无码专区| 日韩伦理片电影在线免费观看| 久久青草免费91观看| 综合一区自拍亚洲综合图区| 亚洲黄色免费在线观看| 亚洲国产一区视频| 99re热免费精品视频观看| 国产在线观a免费观看| 亚洲av永久无码精品网址| 亚洲天堂视频在线观看| 亚洲一区二区视频在线观看| 成人一a毛片免费视频| 免费国产污网站在线观看15| 免费一区二区三区在线视频| 最新国产精品亚洲| 99亚洲精品高清一二区| 国产AⅤ无码专区亚洲AV| 国产精品免费看久久久无码| 91手机看片国产永久免费| 黄网站色视频免费在线观看的a站最新| 亚洲AV无码成人精品区日韩 | 成人亚洲性情网站WWW在线观看| 日韩黄色免费观看| 97人伦色伦成人免费视频| 1000部羞羞禁止免费观看视频| WWW免费视频在线观看播放|