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

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

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

    qqjianyue代碼工

    砌java代碼
    posts - 62, comments - 9, trackbacks - 0, articles - 10
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    正則表達(dá)式 規(guī)則

    Posted on 2008-10-04 20:00 Qzi 閱讀(809) 評論(0)  編輯  收藏

    30分鐘正則表達(dá)式入門的歸納版,原網(wǎng)頁:正則表達(dá)式30分鐘入門

    元字符

    \w 匹配字母或數(shù)字或下劃線或漢字等。等效于Unicode字符類別 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]。如果用ECMAScript選項(xiàng)指定了符合 ECMAScript的行為,則\w只等效于[a-zA-Z_0-9]

    \b 單詞的開頭或結(jié)尾,如果需要更精確的說法,\b匹配這樣的位置:它的前一個(gè)字符和后一個(gè)字符不全是\w

    . 除換行符以外的所有字符

    * 表示數(shù)量,任意數(shù)量,所以 .* 加起來就表示除換行符以外的任意數(shù)量字符,\w*表示任意字符

    + 是和*類似的元字符,不同的是*匹配重復(fù)任意次(可能是0),而+則匹配重復(fù)1次或更多次

    \d 單個(gè)數(shù)字

    \s 匹配任意的空白符,包括空格,制表符(Tab),換行符,中文全角空格等

    ^ 匹配你要用來查找的字符串的開頭,$匹配結(jié)尾。和忽略大小寫的選項(xiàng)類似,有些正則表達(dá)式處理工具還有一個(gè)處理多行的選項(xiàng)。如果選中了這個(gè)選項(xiàng),^$的意義就變成了匹配行的開始處和結(jié)束處 這個(gè)我也不明白(現(xiàn)在明白了,就是如果要指明匹配整串字符的話就可以使用這兩個(gè)來指明。)

    \ 字符轉(zhuǎn)義

    [] 表示括號內(nèi)的其中一個(gè)或者括號內(nèi)范圍的其中一個(gè),例如[aeiou],[1-9],[a-z0-9A-Z]

    對于上面的表示實(shí)際字符的代碼,都可以加上{數(shù)量}來指定匹配指定數(shù)量的字符,例如\d{7}, \w{5}表示7個(gè)數(shù)字,5個(gè)字符

    | 兩個(gè)正則表達(dá)式的或關(guān)系,即匹配其中一個(gè)就行,從左到右匹配,成功后將不繼續(xù)比較,所以長的串應(yīng)該放于前面

    () 整體,括住一個(gè)表達(dá)式,然后可以整體操作,例如:(\d{1,3}\.){3}\d{1,3}是一個(gè)簡單的IP地址匹配表達(dá)式。要理解這個(gè)表達(dá)式,請按下列順序分析它:\d{1,3}匹配13位的數(shù)字,(\d{1,3}\.}{3}匹配三位數(shù)字加上一個(gè)英文句號(這個(gè)整體也就是這個(gè)分組)重復(fù)3次,最后再加上一個(gè)一到三位的數(shù)字(\d{1,3})

    # 注釋,在()內(nèi)有效,若啟用忽略模式里的空白符的選項(xiàng),則()內(nèi)每一行#號后的都是注釋

    簡表

    1.常用的元字符

    代碼

    說明

    .

    匹配除換行符以外的任意字符

    \w

    匹配字母或數(shù)字或下劃線或漢字

    \s

    匹配任意的空白符

    \d

    匹配數(shù)字

    \b

    匹配單詞的開始或結(jié)束

    ^

    匹配字符串的開始

    $

    匹配字符串的結(jié)束


    2.常用的限定符

    代碼/語法

    說明

    *

    重復(fù)零次或更多次

    +

    重復(fù)一次或更多次

    ?

    重復(fù)零次或一次

    {n}

    重復(fù)n

    {n,}

    重復(fù)n次或更多次

    {n,m}

    重復(fù)nm

    一般情況下,重復(fù)限定符會(huì)匹配盡量多的字符串,即所謂的貪婪匹配,在重復(fù)限定符后加上?號變成懶惰匹配,則匹配盡量少的字符串

    3.常用的反義代碼

    代碼/語法

    說明

    \W

    匹配任意不是字母,數(shù)字,下劃線,漢字的字符

    \S

    匹配任意不是空白符的字符

    \D

    匹配任意非數(shù)字的字符

    \B

    匹配不是單詞開頭或結(jié)束的位置

    [^x]

    匹配除了x以外的任意字符

    [^aeiou]

    匹配除了aeiou這幾個(gè)字母以外的任意字符

    比較難的點(diǎn),詳細(xì)說明一下

    后向引用

    使用小括號指定一個(gè)子表達(dá)式后,匹配這個(gè)子表達(dá)式的文本(也就是此分組捕獲的內(nèi)容)可以在表達(dá)式或其它程序中作進(jìn)一步的處理。默認(rèn)情況下,每個(gè)分組會(huì)自動(dòng)擁有一個(gè)組號,規(guī)則是:從左向右,以分組的左括號為標(biāo)志,第一個(gè)出現(xiàn)的分組的組號為1,第二個(gè)為2,以此類推。

    后向引用用于重復(fù)搜索前面某個(gè)分組匹配的文本。例如,\1代表分組1匹配的文本。難以理解?請看示例:

    \b(\w+)\b\s+\1\b可以用來匹配重復(fù)的單詞,像go go, kitty kitty。首先是一個(gè)單詞,也就是單詞開始處和結(jié)束處之間的多于一個(gè)的字母或數(shù)字(\b(\w+)\b),然后是1個(gè)或幾個(gè)空白符(\s+),最后是前面匹配的那個(gè)單詞(\1)

    你也可以自己指定子表達(dá)式的組名。要指定一個(gè)子表達(dá)式的組名,請使用這樣的語法:(?<Word>\w+)(或者把尖括號換成'也行:(?'Word'\w+)),這樣就把\w+的組名指定為Word了。要后向引用這個(gè)分組捕獲的內(nèi)容,你可以使用\k<Word>,所以上一個(gè)例子也可以寫成這樣:\b(?<Word>\w+)\b\s+\k<Word>\b

    使用小括號的時(shí)候,還有很多特定用途的語法。下面列出了最常用的一些:

    4.分組語法

    捕獲

    (exp)

    匹配exp,并捕獲文本到自動(dòng)命名的組里

    (?<name>exp)

    匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp)

    (?:exp)

    匹配exp,不捕獲匹配的文本,也不給此分組分配組號

    位置指定

    (?=exp)

    匹配exp前面的位置

    (?<=exp)

    匹配exp后面的位置

    (?!exp)

    匹配后面跟的不是exp的位置

    (?<!exp)

    匹配前面不是exp的位置

    注釋

    (?#comment)

    這種類型的組不對正則表達(dá)式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀

    我們已經(jīng)討論了前兩種語法。第三個(gè)(?:exp)不會(huì)改變正則表達(dá)式的處理方式,只是這樣的組匹配的內(nèi)容不會(huì)像前兩種那樣被捕獲到某個(gè)組里面。


    零寬斷言

    接下來的四個(gè)用于查找在某些內(nèi)容(但并不包括這些內(nèi)容)之前或之后的東西,也就是說它們像\b,^,$那樣用于指定一個(gè)位置,這個(gè)位置應(yīng)該滿足一定的條件(斷言),因此它們也被稱為零寬斷言。最好還是拿例子來說明吧:

    (?=exp)也叫零寬度正預(yù)測先行斷言,它斷言自身出現(xiàn)的位置的后面能匹配表達(dá)式exp。比如\b\w+(?=ing\b),匹配以ing結(jié)尾的單詞的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.時(shí),它會(huì)匹配singdanc

    (?<=exp)也叫零寬度正回顧后發(fā)斷言,它斷言自身出現(xiàn)的位置的前面能匹配表達(dá)式exp。比如(?<=\bre)\w+\b會(huì)匹配以re開頭的單詞的后半部分(除了re以外的部分),例如在查找reading a book時(shí),它匹配ading

    假如你想要給一個(gè)很長的數(shù)字中每三位間加一個(gè)逗號(當(dāng)然是從右邊加起了),你可以這樣查找需要在前面和里面添加逗號的部分:((?<=\d)\d{3})*\b,用它對1234567890進(jìn)行查找時(shí)結(jié)果是234567890

    下面這個(gè)例子同時(shí)使用了這兩種斷言:(?<=\s)\d+(?=\s)匹配以空白符間隔的數(shù)字(再次強(qiáng)調(diào),不包括這些空白符)


    6.常用的處理選項(xiàng)

    名稱

    說明

    IgnoreCase(忽略大小寫)

    匹配時(shí)不區(qū)分大小寫。

    Multiline(多行模式)

    更改^$的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個(gè)字符串的開頭和結(jié)尾匹配。

    Singleline(單行模式)

    更改.的含義,使它與每一個(gè)字符匹配(包括換行符\n)。

    IgnorePatternWhitespace(忽略空白)

    忽略表達(dá)式中的非轉(zhuǎn)義空白并啟用由#標(biāo)記的注釋。

    RightToLeft(從右向左查找)

    匹配從右向左而不是從左向右進(jìn)行。

    ExplicitCapture(顯式捕獲)

    僅捕獲已被顯式命名的組。

    ECMAScript(JavaScript兼容模式)

    使表達(dá)式的行為與它在JavaScript里的行為一致。

    7.尚未詳細(xì)討論的語法

    \a

    報(bào)警字符(打印它的效果是電腦嘀一聲)

    \b

    通常是單詞分界位置,但如果在字符類里使用代表退格

    \t

    制表符,Tab

    \r

    回車

    \v

    豎向制表符

    \f

    換頁符

    \n

    換行符

    \e

    Escape

    \0nn

    ASCII代碼中八進(jìn)制代碼為nn的字符

    \xnn

    ASCII代碼中十六進(jìn)制代碼為nn的字符

    \unnnn

    Unicode代碼中十六進(jìn)制代碼為nnnn的字符

    \cN

    ASCII控制字符。比如\cC代表Ctrl+C

    \A

    字符串開頭(類似^,但不受處理多行選項(xiàng)的影響)

    \Z

    字符串結(jié)尾或行尾(不受處理多行選項(xiàng)的影響)

    \z

    字符串結(jié)尾(類似$,但不受處理多行選項(xiàng)的影響)

    \G

    當(dāng)前搜索的開頭

    \p{name}

    Unicode中命名為name的字符類,例如\p{IsGreek}

    (?>exp)

    貪婪子表達(dá)式

    (?<x>-<y>exp)

    平衡組

    (?im-nsx:exp)

    在子表達(dá)式exp中改變處理選項(xiàng)

    (?im-nsx)

    為表達(dá)式后面的部分改變處理選項(xiàng)

    (?(exp)yes|no)

    exp當(dāng)作零寬正向先行斷言,如果在這個(gè)位置能匹配,使用yes作為此組的表達(dá)式;否則使用no

    (?(exp)yes)

    同上,只是使用空表達(dá)式作為no

    (?(name)yes|no)

    如果命名為name的組捕獲到了內(nèi)容,使用yes作為表達(dá)式;否則使用no

    (?(name)yes)

    同上,只是使用空表達(dá)式作為no



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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 自拍偷自拍亚洲精品第1页| 成人福利在线观看免费视频| 亚洲男同帅GAY片在线观看| 成人在线视频免费| 99久久久国产精品免费牛牛四川| 永久免费无码日韩视频| 亚洲欧美日韩中文无线码| 亚洲色av性色在线观无码| 国产亚洲一区二区三区在线| 成人亚洲综合天堂| 成人av免费电影| 免费h片在线观看网址最新| 国内精品久久久久影院免费 | 91av免费观看| 成人国产精品免费视频| 免费人成再在线观看网站| 亚洲中文无码永久免费| 亚洲一级大黄大色毛片| 亚洲色成人网一二三区| 亚洲av日韩av激情亚洲| 日本亚洲成高清一区二区三区| 精品亚洲视频在线观看 | 亚洲Av永久无码精品黑人| 亚洲国产成人超福利久久精品| 亚洲综合一区二区国产精品| 亚洲av永久无码精品表情包| 亚洲精品乱码久久久久久中文字幕| 亚洲国产成人五月综合网 | 猫咪免费人成网站在线观看入口| 亚洲AV色欲色欲WWW| 亚洲成av人在线观看网站| 亚洲乱妇老熟女爽到高潮的片 | 成人无码区免费A片视频WWW| 日本zzzzwww大片免费| 精品国产污污免费网站aⅴ | 久久水蜜桃亚洲av无码精品麻豆| 亚洲国产人成在线观看69网站| 亚洲男人的天堂在线播放| 亚洲网站在线播放| 亚洲日韩乱码中文无码蜜桃臀| 亚洲同性男gay网站在线观看|