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

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

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

    自由,平等,開源,分享

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      2 Posts :: 61 Stories :: 3 Comments :: 0 Trackbacks

    Regular Mode & Behavior
    名稱 英文 字符/格式 描述



    元字符 Meta Character { } [ ] ( ) \ / ^ $ * + . , ? | : = ! - 元字符是正則表達(dá)式語法的一部分。任何時(shí)候要在正則表達(dá)式中使用這些元字符,都必須對它們進(jìn)行轉(zhuǎn)義,即其前加上反斜線。另外,在某些編程語言中,反斜線“\”通常用來進(jìn)行轉(zhuǎn)義操作,那么此時(shí)使用元字符時(shí),就要進(jìn)行雙重轉(zhuǎn)義,即先轉(zhuǎn)義反斜線再轉(zhuǎn)義元字符。
    特殊字符 Special Character \t \n \r \f \a \e \cX \B \V \0 通常是一些不可見的格式控制符號(hào),使用時(shí)也應(yīng)該注意雙重轉(zhuǎn)義。


    簡單類 Simple Class [...] 指定要包含的字符。
    負(fù)向類 Negation Class [^...] 指定要排除的字符。
    范圍類 Range Class [...-...] 指定要包含的字符有序序列。
    負(fù)向范圍類 Negative Range Class [^...-...] 指定要排除的字符有序序列。
    組合類 Combination Class 由幾種字符類組合而成的字符類(內(nèi)部類之間不能有空格)。組合類中允許出現(xiàn)簡單類、負(fù)向類、范圍類、預(yù)定義類。
    聯(lián)合類 Union Class
    交叉類 Intersection Class
    預(yù)定義類 Predefined Class . \d \D \s \S \w \W \xXX \XXX \uXXXX 某些反復(fù)用到的模式被預(yù)先定義,可以方便地指定復(fù)雜的模式,也使模式的匹配變得更簡單。

    量詞 Quantifier 用于指定某個(gè)特定模式出現(xiàn)的次數(shù)。當(dāng)指定某個(gè)模式應(yīng)當(dāng)出現(xiàn)的次數(shù)時(shí),可以指定硬性數(shù)量或指定軟性數(shù)量。量詞使用在某個(gè)模式的后面,用以限定該模式在字符串中出現(xiàn)的次數(shù)。
    貪婪(簡單)量詞 Greedy Quantifier ? * + {n} {n,m} {n,} 先看整個(gè)的字符串是不是一個(gè)匹配。如果沒有發(fā)現(xiàn)匹配,它去掉最后字符串中的最后一個(gè)字符,并再次嘗試。如果還是沒有發(fā)現(xiàn)匹配,那么再次去掉最后一字符,這個(gè)過程會(huì)一直重復(fù)直到發(fā)現(xiàn)一個(gè)匹配或者或者字符串不剩任何字符。
    惰性量詞 Inert Quantifier ?? *? +? {n}? {n,m}? {n,}? 先看字符串中第一個(gè)字符是不是一個(gè)匹配。如果單獨(dú)這一個(gè)字符還不夠,就讀入下一個(gè)字符,組成兩個(gè)字符的字符串。如果還是沒有發(fā)現(xiàn)匹配,惰性量詞繼續(xù)從字符串中添加字符直到發(fā)現(xiàn)一個(gè)匹配或者整個(gè)字符串都檢查過也沒有匹配。當(dāng)發(fā)現(xiàn)一個(gè)匹配后,忽略前面已經(jīng)匹配的字符串,接著從字符串的下一個(gè)字符開始進(jìn)行新的匹配檢查。惰性量詞和貪婪量詞的工作方式恰好相反。
    支配性量詞 Dominant Quantifier ?+ *+ ++ {n}+ {n,m}+ {n,}+ 嘗試匹配整個(gè)字符串。如果整個(gè)字符串不能產(chǎn)生匹配,不做進(jìn)一步嘗試。
    復(fù)



    (捕獲性)分組 Capture Group (...) 通過一系列圓括號(hào)包圍一系列字符、字符類以及量詞來使用。它可以處理特定的字符或字符序列的重復(fù)問題。通過混合使用字符、字符類和量詞,可以實(shí)現(xiàn)一些相當(dāng)復(fù)雜的分組,同時(shí)也不介意將分組放在分組間。
    反向引用 Back-Reference 每個(gè)捕獲性分組在使用后都被存放在一個(gè)特殊的地方以備將來使用,這些存儲(chǔ)在分組中的特殊值,叫做“反向引用”。反向引用是按照從左到右遇到的左圓括號(hào)字符的順序進(jìn)行創(chuàng)建和編號(hào)的。在正則表達(dá)式中,反向引用可以從構(gòu)造函數(shù)、轉(zhuǎn)義 \n、$n 等形式中獲取。
    非捕獲性分組 No-Capture Group (?:...) 只有捕獲性分組才能創(chuàng)建反向引用,非捕獲性分組無法創(chuàng)建。在較長的正則表達(dá)式中,存儲(chǔ)反向引用會(huì)降低匹配速度。通過使用非捕獲性分組,仍然可以擁有與匹配字符串序列同樣的能力,而無需存儲(chǔ)結(jié)果的開銷。非捕獲性分組不能使用任何形式的反向引用。
    候選 Candidate ...|... 候選項(xiàng)可以是任意多個(gè),在兩兩模式之間加上豎線,用于匹配可能的模式。

    前瞻 Look-Ahead 它告訴正則表達(dá)式運(yùn)算器向前看一些字符而不移動(dòng)其位置。前瞻會(huì)使用到圓括號(hào),但這不是分組,分組是不會(huì)考慮前瞻的存在(無論是正向還是負(fù)向)。若在分組中使用前瞻,無論是正向還是負(fù)向,都可以使用分組的反向引用,但該反向引用中并不包含前瞻模式串。
    正向前瞻 Forward Look-Ahead (?=...) 檢查的是接下來出現(xiàn)的是不是某個(gè)允許的特定字符集。
    負(fù)向前瞻 Negation Look-Ahead (?!...) 檢查的是接下來出現(xiàn)的是不是不應(yīng)該出現(xiàn)的特定字符集。
    后瞻 Look-Behind 匹配 b 當(dāng)且僅當(dāng)它前面沒有 a
    邊界 Boundary ^ $ \b \B 用于正則表達(dá)式中以表示模式的位置。
    多行模式 Multiline m (設(shè)置多行模式為 True) 只要在正則表達(dá)式中設(shè)置多行模式為 True 即可。它會(huì)讓 $ 邊界匹配換行符 \n 以及字符串真正的結(jié)尾。多行模式會(huì)讓 ^ 邊界匹配換行符之后的位置。

    Classic Regular Application
    名稱 變量 正則表達(dá)式

    礎(chǔ)

    英文字母 Character ^[A-Za-z]+$
    英文大寫字母 Lower-Char ^[A-Z]+$
    英文小寫字母 Upper-Char ^[a-z]+$
    字母和數(shù)字 Char-Int ^[A-Za-z0-9]+$
    整數(shù) Integer ^-?\d+$
    正整數(shù) SL-Int ^[0-9]*[1-9][0-9]*$
    非正整數(shù) NOT-SL-Int ^((-\d+)|(0+))$
    負(fù)整數(shù) NT-Int ^-[0-9]*[1-9][0-9]*$
    非負(fù)整數(shù) NOT-NT-Int ^\d+$
    浮點(diǎn)數(shù) Float-Num ^(-?\d+)(\.\d+)?$
    正浮點(diǎn)數(shù) SL-Float ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
    非正浮點(diǎn)數(shù) NOT-SL-Float ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
    負(fù)浮點(diǎn)數(shù) NT-Float ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
    非負(fù)浮點(diǎn)數(shù) NOT-NT-Float ^\d+(\.\d+)?$
    雙字節(jié)字符(包括中文) D-Byte-Char [^\x00-\xff]
    空行 Blank-Line \n\s*\r
    實(shí)

    應(yīng)
    電子郵件 E-mail ^([a-z0-9])(([\-.]|[_]+)?([a-z0-9]+))*(@)([a-z0-9])((([-]+)?([a-z0-9]+))?)*((.[a-z]{2,3})?(.[a-z]{2,6}))$
    網(wǎng)址 URL ^((https|http|ftp|rtsp|mms)://)(([0-9a-z_!~*’().&=+$%-]+: )?[0-9a-z_!~*’().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!~*’()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!~*’().;?:@&=+$,%#-]+)+/?)$
    IP 地址 IP ^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$
    身份證 ID-Card ^\d{15}|\d{18}$
    電話號(hào)碼 Phone ^\d+$
    郵政編碼 Zip-Code ^[1-9]\d{5}(?!\d)$
    金額 Money ^\d+\.\d{2}$
    帳號(hào) Account ^\w{6,15}$
    密碼 Password ^\w{6,15}$
    中文 Chinese [\u4e00-\u9fa5]
    日期(yyyy-mm-dd) Date ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
    日期時(shí)間(yyyy-mm-dd hh:mm:ss) DateTime ^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$

    Conception & History

    正則表達(dá)式 Regular Expression(regexp,regex,regxp),正規(guī)表達(dá)式,正規(guī)表示式,常規(guī)表達(dá)式,“模式”。
    正則表達(dá)式是指一個(gè)用來描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串的單個(gè)字符串。

    最初的正則表達(dá)式出現(xiàn)于理論計(jì)算機(jī)科學(xué)的自動(dòng)控制理論和形式語言理論中。
    在這些領(lǐng)域中有對計(jì)算(自動(dòng)控制)的模型和對形式語言描述與分類的研究。
    1940 年代,Warren McCulloch 與 Walter Pitts 將神經(jīng)系統(tǒng)中的神經(jīng)元描述成小而簡單的自動(dòng)控制元。
    稍后,數(shù)學(xué)家 Stephen Kleene 利用稱之為正則集合的數(shù)學(xué)符號(hào)來描述此模型。
    Ken Thompson 將此符號(hào)系統(tǒng)引入編輯器 QED,然后是 Unix 上的編輯器 ed,并最終引入 grep。
    自此,正則表達(dá)式被廣泛地使用于各種 Unix 或者類似 Unix 的工具,例如 Perl。

    Quantifier
    貪婪(簡單)量詞 惰性量詞 支配性量詞 描述
    ? ?? ?+ 零次或一次出現(xiàn)
    * *? *+ 零次或多次出現(xiàn)
    + +? ++ 一次或多次出現(xiàn)
    {n} {n}? {n}+ 恰好 n 次出現(xiàn)
    {n,m} {n,m}? {n,m}+ 至少 n 次至多 m 次出現(xiàn)
    {n,} {n,}? {n,}+ 至少 n 次出現(xiàn)

    Meta Character
    字符 描述 字符 描述
    {} 花括號(hào) - 減號(hào)
    [] 方括號(hào) . 點(diǎn)號(hào)
    () 圓括號(hào) , 逗號(hào)
    \ 反斜線 ? 問號(hào)
    / 正斜線 | 豎線
    ^ 箭頭符號(hào) : 冒號(hào)
    $ 美圓符號(hào) = 等號(hào)
    * 星號(hào) ! 感嘆號(hào)
    + 加號(hào)

    Boundary

    字符 描述
    ^ 行開頭
    $ 行結(jié)尾
    \b 單詞的邊界
    \B 非單詞的邊界

    Predefined Class
    代碼 等同于 匹配
    . [^\n\r] 除了換行和回車之外的任意字符
    \d [0-9] 數(shù)字字符
    \D [^0-9] 非數(shù)字字符
    \s [ \t\n\x0B\f\r] 空白字符
    \S [^ \t\n\x0B\f\r] 非空白字符
    \w [a-zA-Z_0-9] 單詞字符(所有字母、數(shù)字和下劃線)
    \W [^a-zA-Z_0-9] 非單詞字符
    \xXX 十六進(jìn)制 ASCII 碼字符
    \XXX 八進(jìn)制 ASCII 碼字符
    \uXXXX 十六進(jìn)制 Unicode 碼字符

    Special Character
    字符 描述
    \t 制表符
    \n 換行符
    \r 回車符
    \f 換頁符
    \a alert 字符
    \e escape 字符
    \cX X 相對應(yīng)的控制字符
    \b 回退字符
    \v 垂直制表符
    \0 空字符

    Regular Precedence Level
    字符 描述 優(yōu)先級(jí)
    \ 轉(zhuǎn)義 1
    () (?:) (?=) [] 分組 2
    * + ? {n} {n,m} {n,} 量詞 3
    ^ $ \anymetacharacter 位置和順序 4
    | 候選 5
    注:從左至右求值。

    posted on 2008-04-07 23:22 龍震 閱讀(1896) 評論(0)  編輯  收藏 所屬分類: 參考
    主站蜘蛛池模板: 亚洲综合激情五月丁香六月| 亚洲国产成人久久综合一| 久久亚洲国产最新网站| 4虎永免费最新永久免费地址| 亚洲av综合av一区| 亚洲另类激情专区小说图片| 久久无码av亚洲精品色午夜| 暖暖在线日本免费中文| 亚洲AV色欲色欲WWW| 国产99视频精品免费视频7| 在线看亚洲十八禁网站| 亚洲成a人片在线观看日本麻豆| 美女黄频视频大全免费的| 四虎精品亚洲一区二区三区| 污污的视频在线免费观看| 亚洲国产日韩在线观频| 国产成人无码精品久久久免费| 亚洲人成精品久久久久| 无人在线观看免费高清| 亚洲国产日韩综合久久精品| 精品国产一区二区三区免费看| 免费视频精品一区二区| 国产亚洲真人做受在线观看| 午夜网站在线观看免费完整高清观看 | 亚洲精品不卡视频| 在线看片免费人成视久网| 亚洲AV永久无码区成人网站| 精品免费久久久久久久| 亚洲午夜爱爱香蕉片| 日本不卡免费新一区二区三区| 亚洲高清免费在线观看| 日本一区二区三区日本免费| h在线看免费视频网站男男| 亚洲av永久无码精品表情包| 久久精品免费一区二区喷潮| 一级一黄在线观看视频免费| 精品无码国产污污污免费| 国产精品成人啪精品视频免费| 911精品国产亚洲日本美国韩国 | 精品97国产免费人成视频| 久久亚洲精品无码VA大香大香|