<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á)式語法的一部分。任何時候要在正則表達(dá)式中使用這些元字符,都必須對它們進行轉(zhuǎn)義,即其前加上反斜線。另外,在某些編程語言中,反斜線“\”通常用來進行轉(zhuǎn)義操作,那么此時使用元字符時,就要進行雙重轉(zhuǎn)義,即先轉(zhuǎn)義反斜線再轉(zhuǎn)義元字符。
    特殊字符 Special Character \t \n \r \f \a \e \cX \B \V \0 通常是一些不可見的格式控制符號,使用時也應(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 用于指定某個特定模式出現(xiàn)的次數(shù)。當(dāng)指定某個模式應(yīng)當(dāng)出現(xiàn)的次數(shù)時,可以指定硬性數(shù)量或指定軟性數(shù)量。量詞使用在某個模式的后面,用以限定該模式在字符串中出現(xiàn)的次數(shù)。
    貪婪(簡單)量詞 Greedy Quantifier ? * + {n} {n,m} {n,} 先看整個的字符串是不是一個匹配。如果沒有發(fā)現(xiàn)匹配,它去掉最后字符串中的最后一個字符,并再次嘗試。如果還是沒有發(fā)現(xiàn)匹配,那么再次去掉最后一字符,這個過程會一直重復(fù)直到發(fā)現(xiàn)一個匹配或者或者字符串不剩任何字符。
    惰性量詞 Inert Quantifier ?? *? +? {n}? {n,m}? {n,}? 先看字符串中第一個字符是不是一個匹配。如果單獨這一個字符還不夠,就讀入下一個字符,組成兩個字符的字符串。如果還是沒有發(fā)現(xiàn)匹配,惰性量詞繼續(xù)從字符串中添加字符直到發(fā)現(xiàn)一個匹配或者整個字符串都檢查過也沒有匹配。當(dāng)發(fā)現(xiàn)一個匹配后,忽略前面已經(jīng)匹配的字符串,接著從字符串的下一個字符開始進行新的匹配檢查。惰性量詞和貪婪量詞的工作方式恰好相反。
    支配性量詞 Dominant Quantifier ?+ *+ ++ {n}+ {n,m}+ {n,}+ 嘗試匹配整個字符串。如果整個字符串不能產(chǎn)生匹配,不做進一步嘗試。
    復(fù)



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

    前瞻 Look-Ahead 它告訴正則表達(dá)式運算器向前看一些字符而不移動其位置。前瞻會使用到圓括號,但這不是分組,分組是不會考慮前瞻的存在(無論是正向還是負(fù)向)。若在分組中使用前瞻,無論是正向還是負(fù)向,都可以使用分組的反向引用,但該反向引用中并不包含前瞻模式串。
    正向前瞻 Forward Look-Ahead (?=...) 檢查的是接下來出現(xiàn)的是不是某個允許的特定字符集。
    負(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 即可。它會讓 $ 邊界匹配換行符 \n 以及字符串真正的結(jié)尾。多行模式會讓 ^ 邊界匹配換行符之后的位置。

    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+$
    浮點數(shù) Float-Num ^(-?\d+)(\.\d+)?$
    正浮點數(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]*))$
    非正浮點數(shù) NOT-SL-Float ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
    負(fù)浮點數(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ù)浮點數(shù) NOT-NT-Float ^\d+(\.\d+)?$
    雙字節(jié)字符(包括中文) D-Byte-Char [^\x00-\xff]
    空行 Blank-Line \n\s*\r


    應(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}$
    電話號碼 Phone ^\d+$
    郵政編碼 Zip-Code ^[1-9]\d{5}(?!\d)$
    金額 Money ^\d+\.\d{2}$
    帳號 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-))$
    日期時間(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á)式是指一個用來描述或者匹配一系列符合某個句法規(guī)則的字符串的單個字符串。

    最初的正則表達(dá)式出現(xiàn)于理論計算機科學(xué)的自動控制理論和形式語言理論中。
    在這些領(lǐng)域中有對計算(自動控制)的模型和對形式語言描述與分類的研究。
    1940 年代,Warren McCulloch 與 Walter Pitts 將神經(jīng)系統(tǒng)中的神經(jīng)元描述成小而簡單的自動控制元。
    稍后,數(shù)學(xué)家 Stephen Kleene 利用稱之為正則集合的數(shù)學(xué)符號來描述此模型。
    Ken Thompson 將此符號系統(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
    字符 描述 字符 描述
    {} 花括號 - 減號
    [] 方括號 . 點號
    () 圓括號 , 逗號
    \ 反斜線 ? 問號
    / 正斜線 | 豎線
    ^ 箭頭符號 : 冒號
    $ 美圓符號 = 等號
    * 星號 ! 感嘆號
    + 加號

    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 十六進制 ASCII 碼字符
    \XXX 八進制 ASCII 碼字符
    \uXXXX 十六進制 Unicode 碼字符

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

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

    posted on 2008-04-07 23:22 龍震 閱讀(1891) 評論(0)  編輯  收藏 所屬分類: 參考
    主站蜘蛛池模板: 午夜成人免费视频| 亚洲美女在线国产| 另类小说亚洲色图| 丁香五月亚洲综合深深爱| 久99久精品免费视频热77| 亚洲AV第一成肉网| 亚洲AV美女一区二区三区| 午夜毛片不卡高清免费| 2022免费国产精品福利在线| 久久久久久亚洲Av无码精品专口| 免费无码又爽又刺激聊天APP| 国产精品免费久久久久影院| 亚洲国产成人在线视频| 亚洲人午夜射精精品日韩| 最近中文字幕免费2019| 一级做a爰片久久毛片免费陪| 亚洲精品综合久久中文字幕 | 无人视频免费观看免费视频 | 成人电影在线免费观看| 亚洲中文无码卡通动漫野外| 亚洲av中文无码乱人伦在线r▽| 国内自产少妇自拍区免费| 一区二区三区福利视频免费观看| 免费在线观看亚洲| 亚洲免费观看在线视频| 亚洲熟女一区二区三区| 免费99热在线观看| 大地资源在线观看免费高清| 免费在线观看一级片| 最好2018中文免费视频| 2017亚洲男人天堂一| 亚洲欧洲一区二区| 中文字幕第一页亚洲| 免费人成网站7777视频| 成全影视免费观看大全二| 91精品国产免费| 国产一级高青免费| 十八禁的黄污污免费网站| 亚洲色精品VR一区区三区| 91天堂素人精品系列全集亚洲| 国产av无码专区亚洲av果冻传媒|