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

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

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

    新的起點 新的開始

    快樂生活 !

    Java正則表達式 基礎

    1.字符

    x    字符 x。例如a表示字符a
    \\    反斜線字符。在書寫時要寫為\\\\。(注意:因為java在第一次解析時,把\\\\解析成正則表達式\\,在第二次解析時再解析為\,所以凡是不是1.1列舉到的轉義字符,包括1.1的\\,而又帶有\的都要寫兩次)
    \0n    帶有八進制值 0的字符 n (0 <= n <= 7)
    \0nn    帶有八進制值 0的字符 nn (0 <= n <= 7)
    \0mnn    帶有八進制值 0的字符 mnn(0 <= m <= 3、0 <= n <= 7)
    \xhh    帶有十六進制值 0x的字符 hh
    \uhhhh    帶有十六進制值 0x的字符 hhhh
    \t    制表符 ('\u0009')
    \n    新行(換行)符 ('\u000A')
    \r    回車符 ('\u000D')
    \f    換頁符 ('\u000C')
    \a    報警 (bell) 符 ('\u0007')
    \e    轉義符 ('\u001B')
    \cx    對應于 x 的控制符
    2.字符類
    [abc]    a、b或 c(簡單類)。例如[egd]表示包含有字符e、g或d。
    [^abc]    任何字符,除了 a、b或 c(否定)。例如[^egd]表示不包含字符e、g或d。
    [a-zA-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寫為\\d)任何字符

    (與行結束符可能匹配也可能不匹配)
    \d    數字:[0-9]
    \D    非數字: [^0-9]
    \s    空白字符:[ \t\n\x0B\f\r]
    \S    非空白字符:[^\s]
    \w    單詞字符:[a-zA-Z_0-9]
    \W    非單詞字符:[^\w]
    4.POSIX 字符類(僅 US-ASCII)(注意反斜杠要寫兩次,例如\p{Lower}寫為\\p{Lower})
    \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}\x20]
    \p{Blank}    空格或制表符:[ \t]
    \p{Cntrl}    控制字符:[\x00-\x1F\x7F]
    \p{XDigit}    十六進制數字:[0-9a-fA-F]
    \p{Space}    空白字符:[ \t\n\x0B\f\r]
    5.java.lang.Character 類(簡單的 java 字符類型)
    \p{javaLowerCase}    等效于 java.lang.Character.isLowerCase()
    \p{javaUpperCase}    等效于 java.lang.Character.isUpperCase()
    \p{javaWhitespace}    等效于 java.lang.Character.isWhitespace()
    \p{javaMirrored}    等效于 java.lang.Character.isMirrored()
    6.Unicode 塊和類別的類
    \p{InGreek}    Greek 塊(簡單塊)中的字符
    \p{Lu}    大寫字母(簡單類別)
    \p{Sc}    貨幣符號
    \P{InGreek}    所有字符,Greek 塊中的除外(否定)
    [\p{L}&&[^\p{Lu}]]     所有字母,大寫字母除外(減去)
    7.邊界匹配器
    ^    行的開頭,請在正則表達式的開始處使用^。例如:^(abc)表示以abc開頭的字符串。注意編譯的時候要設置參數MULTILINE,如 Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
    $    行的結尾,請在正則表達式的結束處使用。例如:(^bca).*(abc$)表示以bca開頭以abc結尾的行。
    \b    單詞邊界。例如\b(abc)表示單詞的開始或結束包含有abc,(abcjj、jjabc 都可以匹配)
    \B    非單詞邊界。例如\B(abc)表示單詞的中間包含有abc,(jjabcjj匹配而jjabc、abcjj不匹配)
    \A    輸入的開頭
    \G    上一個匹配的結尾(個人感覺這個參數沒什么用)。例如\\Gdog表示在上一個匹配結尾處查找dog如果沒有的話則從開頭查找,注意如果開頭不是dog則不能匹配。
    \Z    輸入的結尾,僅用于最后的結束符(如果有的話)
    行結束符 是一個或兩個字符的序列,標記輸入字符序列的行結尾。
    以下代碼被識別為行結束符:
    ‐新行(換行)符 ('\n')、
    ‐后面緊跟新行符的回車符 ("\r\n")、
    ‐單獨的回車符 ('\r')、
    ‐下一行字符 ('\u0085')、
    ‐行分隔符 ('\u2028') 或
    ‐段落分隔符 ('\u2029)。
    \z    輸入的結尾
    當編譯模式時,可以設置一個或多個標志,例如
    Pattern pattern = Pattern.compile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
    下面六個標志都是支持的:
    ‐CASE_INSENSITIVE:匹配字符時與大小寫無關,該標志默認只考慮US ASCII字符。
    ‐UNICODE_CASE:當與CASE_INSENSITIVE結合時,使用Unicode字母匹配
    ‐MULTILINE:^和$匹配一行的開始和結尾,而不是整個輸入
    ‐UNIX_LINES: 當在多行模式下匹配^和$時,只將'\n'看作行終止符
    ‐DOTALL: 當使用此標志時,.符號匹配包括行終止符在內的所有字符
    ‐CANON_EQ: 考慮Unicode字符的規范等價
    8.Greedy 數量詞
    X?    X,一次或一次也沒有
    X*    X,零次或多次
    X+    X,一次或多次
    X{n}    X,恰好 n 次
    X{n,}    X,至少 n 次
    X{n,m}    X,至少 n 次,但是不超過 m 次
    9.Reluctant 數量詞
    X??    X,一次或一次也沒有
    X*?    X,零次或多次
    X+?    X,一次或多次
    X{n}?    X,恰好 n 次
    X{n,}?    X,至少 n 次
    X{n,m}?    X,至少 n 次,但是不超過 m 次
    10.Possessive 數量詞
    X?+    X,一次或一次也沒有
    X*+    X,零次或多次
    X++    X,一次或多次
    X{n}+    X,恰好 n 次
    X{n,}+    X,至少 n 次
    X{n,m}+    X,至少 n 次,但是不超過 m 次
    Greedy,Reluctant,Possessive的區別在于:(注意僅限于進行.等模糊處理時)
    greedy量詞被看作“貪婪的”,因為它第一次就讀入整個被模糊匹配的字符串。如果第一個匹配嘗試(整個輸入字符串)失敗,匹配器就會在被匹配字符串中的最后一位后退一個字符并且再次嘗試,重復這個過程,直到找到匹配或者沒有更多剩下的字符可以后退為止。根據表達式中使用的量詞,它最后試圖匹配的內容是1 個或者0個字符。
    但是,reluctant量詞采取相反的方式:它們從被匹配字符串的開頭開始,然后逐步地一次讀取一個字符搜索匹配。它們最后試圖匹配的內容是整個輸入字符串。
    最后,possessive量詞總是讀完整個輸入字符串,嘗試一次(而且只有一次)匹配。和greedy量詞不同,possessive從不后退。
    11.Logical 運算符
    XY    X 后跟 Y
    X|Y    X 或 Y
    (X)    X,作為捕獲組。例如(abc)表示把abc作為一個整體進行捕獲
    12.Back 引用
    \n    任何匹配的 nth捕獲組
    捕獲組可以通過從左到右計算其開括號來編號。例如,在表達式 ((A)(B(C)))中,存在四個這樣的組:
    1        ((A)(B(C)))
    2        \A
    3        (B(C))
    4        (C)
    在表達式中可以通過\n來對相應的組進行引用,例如(ab)34\1就表示ab34ab,(ab)34(cd)\1\2就表示ab34cdabcd。
    13.引用
    \    Nothing,但是引用以下字符
    \Q    Nothing,但是引用所有字符,直到 \E。QE之間的字符串會原封不動的使用(1.1中轉義字符的除外)。例如, ab\\Q{|}\\\\E
    可以匹配ab{|}\\
    \E    Nothing,但是結束從 \Q開始的引用
    14.特殊構造(非捕獲)
    (?:X)    X,作為非捕獲組
    (?idmsux-idmsux)     Nothing,但是將匹配標志由 on 轉為 off。比如:表達式 (?i)abc(?-i)def 這時,(?i) 打開不區分大小寫開關,abc 匹配
    idmsux說明如下:
    ‐i CASE_INSENSITIVE :US-ASCII 字符集不區分大小寫。(?i)
    ‐d UNIX_LINES : 打開UNIX換行符
    ‐m MULTILINE :多行模式(?m)
    UNIX下換行為\n
    WINDOWS下換行為\r\n(?s)
    ‐u UNICODE_CASE : Unicode 不區分大小寫。(?u)
    ‐x COMMENTS :可以在pattern里面使用注解,忽略pattern里面的whitespace,以及"#"一直到結尾(#后面為注解)。(?x)例如(?x)abc#asfsdadsa可以匹配字符串abc
    (?idmsux-idmsux:X)     X,作為帶有給定標志 on - off 的非捕獲組。與上面的類似,上面的表達式,可以改寫成為:(?i:abc)def,或者 (?i)abc(?-i:def)
    (?=X)    X,通過零寬度的正 lookahead。零寬度正先行斷言,僅當子表達式 X 在 此位置的右側匹配時才繼續匹配。例如,\w+(?=\d) 表示字母后面跟數字,但不捕獲數字(不回溯)
    (?!X)    X,通過零寬度的負 lookahead。零寬度負先行斷言。僅當子表達式 X 不在 此位置的右側匹配時才繼續匹配。例如,\w+(?!\d) 表示字母后面不跟數字,且不捕獲數字。
    (?<=X)    X,通過零寬度的正 lookbehind。零寬度正后發斷言。僅當子表達式 X 在 此位置的左側匹配時才繼續匹配。例如,(?<=19)99 表示99前面是數字19,但不捕獲前面的19。(不回溯)
    (?


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


    網站導航:
     

    公告

    Locations of visitors to this pageBlogJava
  • 首頁
  • 新隨筆
  • 聯系
  • 聚合
  • 管理
  • <2009年8月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    統計

    • 隨筆 - 184
    • 文章 - 13
    • 評論 - 226
    • 引用 - 0

    常用鏈接

    留言簿(13)

    隨筆分類(71)

    隨筆檔案(179)

    文章檔案(13)

    新聞分類

    IT人的英語學習網站

    JAVA站點

    優秀個人博客鏈接

    官網學習站點

    生活工作站點

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 336907
    • 排名 - 166

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费国产在线观看| 亚洲第一区香蕉_国产a| 亚洲中文字幕久久无码| 成年女人毛片免费播放人| 亚洲国产日韩在线| 免费观看激色视频网站bd| 亚洲欧洲日本天天堂在线观看| 8090在线观看免费观看| 亚洲福利电影一区二区?| 久久久久久久免费视频| 亚洲欧美日本韩国| 免费一级毛片在线观看| 久久久精品视频免费观看| 久久久久av无码免费网| 亚洲午夜电影一区二区三区| 大地资源免费更新在线播放| 亚洲人成色77777在线观看| 国产免费久久精品| 巨胸喷奶水视频www免费视频| 亚洲AV无码精品色午夜在线观看| 日本在线看片免费人成视频1000| 亚洲免费黄色网址| 又粗又硬免费毛片| 国产在线精品免费aaa片| 亚洲人和日本人jizz| 亚洲成av人片一区二区三区| 91成人免费观看在线观看| 亚洲国产日韩在线| 亚洲精品国产福利一二区| 日韩电影免费观看| 亚洲欧美日韩一区二区三区| 亚洲真人无码永久在线| 又黄又爽又成人免费视频| 黄页视频在线观看免费| 久久精品夜色国产亚洲av| 免费无码又爽又刺激高潮 | 国产一级一毛免费黄片| 亚洲国产精品线观看不卡| 免费大黄网站在线观看| 最近免费中文字幕mv电影| 日韩成人毛片高清视频免费看|