亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    淺談?wù)齽t表達(dá)式(Regular Expression)

    一、什么是正則表達(dá)式?

    簡(jiǎn)單的說(shuō):正則表達(dá)式(Regular Expression)是一種處理字符串匹配的語(yǔ)言;

    正則表達(dá)式描述了一種字符串匹配的模式,可以用來(lái)檢查一個(gè)字符串是否含有某種子串,對(duì)匹配到的子串進(jìn)行“取出”或“替換”操作。

    二、正則表達(dá)式的應(yīng)用

    正則表達(dá)式在實(shí)際的開(kāi)發(fā)過(guò)程中非常實(shí)用,能夠快速解決一些復(fù)雜的字符串處理問(wèn)題,下面我對(duì)正則表達(dá)式的應(yīng)用做一些簡(jiǎn)單分類:

    第一種:數(shù)據(jù)驗(yàn)證
    比如,你要驗(yàn)證一個(gè)字符串是否是正確的EMail,Telphone,Ip等等,那么采用正則表達(dá)式就好非常方便。

    第二種:內(nèi)容查找
    比如,你要抓取一個(gè)網(wǎng)頁(yè)的圖片,那么你肯定要找到<img>標(biāo)簽,這時(shí)候用正則表達(dá)式就可以精準(zhǔn)的匹配到。

    第三種:內(nèi)容替換
    比如,你要把手機(jī)號(hào)碼中間四位隱藏掉變成這種模式,123****4567,那么采用正則表達(dá)式也會(huì)非常方便。

    三、正則表達(dá)式有哪些內(nèi)容

    下面我將簡(jiǎn)單的介紹一下正則表達(dá)式:

    1、 正則表達(dá)式的幾個(gè)重要的概念
    •子表達(dá)式:在正則表達(dá)式中,如果使用”()”括起來(lái)的內(nèi)容,稱之為“子表達(dá)式”
    •捕獲:子表達(dá)式匹配到的結(jié)果會(huì)被系統(tǒng)放在緩沖區(qū)中,這個(gè)過(guò)程,我們稱之為“捕獲”
    •反向引用:我們使用”n”,其中n是數(shù)字,表示引用之前某個(gè)緩沖區(qū)之間的內(nèi)容,我們稱之為“反向引用”
    2、數(shù)量限定符
    •X+     表示:1或多個(gè)
    •X*     表示:0或多個(gè)
    •X?     表示:0或1個(gè)
    •X{n}    表示: n個(gè)
    •X{n,}    表示:至少n個(gè)
    •X{n,m}   表示:n至m個(gè),貪婪原則,會(huì)盡可能匹配多個(gè);如果在后面加個(gè)?,則為非貪婪原則
    注:X表示要查找的字符

    3、 字符限定符
    •d   表示:匹配一個(gè)數(shù)字字符,[0-9]
    •D  表示:匹配一個(gè)非數(shù)字字符,[^0-9]
    •w  表示:匹配包括下劃線在內(nèi)的單詞字符,[0-9a-zA-Z_]
    •W  表示:匹配任何非單詞字符,[^0-9a-zA-Z_]
    •s  表示:匹配任何空白字符,空格、回車、制表符
    •S  表示:匹配任何非空白字符
    •.    表示:匹配任何單個(gè)字符
    此外還有以下幾種:

    范圍字符:[a-z]、[A-Z]、[0-9]、[0-9a-z]、[0-9a-zA-Z]
    任意字符:[abcd]、[1234]
    非在內(nèi)的字符:[^a-z]、[^0-9]、[^abcd]

    4、 定位符
    •^  表示:開(kāi)頭標(biāo)識(shí)
    •$  表示:結(jié)尾標(biāo)識(shí)
    •b   表示:?jiǎn)卧~邊界
    •B  表示:非單詞邊界
    5、轉(zhuǎn)義符
    •   用于匹配某些特殊字符
    6、選擇匹配符
    •|   可以匹配多個(gè)規(guī)則
    7、特殊用法
    •(?=) : 正向預(yù)查:匹配以指定內(nèi)容結(jié)束的字符串
    •(?!) : 負(fù)向預(yù)查:匹配不是以指定內(nèi)容結(jié)束的字符串
    •(?:) : 不把選擇匹配符的內(nèi)容放到緩沖區(qū)

    四、正則表達(dá)式在Javascript下的使用方法

    在Javascript下使用正則表達(dá)式,有兩種方法:

    第一種方法:使用RegExp類
    提供的方法有:

    •test(str): 在字符串匹配是否有匹配模式的字符串,返回true/false
    •exec(str): 返回匹配模式匹配到的字符串,如果有,返回相應(yīng)的字符串,無(wú),返回null;
            //如果正則表達(dá)式中有子表達(dá)式,使用exec方法時(shí)

            //返回的是:result[0] = 匹配結(jié)果 , result[1] = 子表達(dá)式1的匹配結(jié)果 ……

    第二種方法是:使用String類
    提供的方法有:

    •search : 返回匹配模式的字符串出現(xiàn)的位置,如果沒(méi)有,返回-1
    •match : 返回匹配模式匹配到的字符串,如果有,返回?cái)?shù)組,無(wú),返回null
    •replace : 將匹配模式匹配到的字符串進(jìn)行替換
    •split : 將字符串已匹配模式為分隔符進(jìn)行字符串分隔,返回?cái)?shù)組

    五、正則表達(dá)式在PHP下的使用方法

    PHP下有兩種使用正則表達(dá)式的函數(shù):

    第一種是:Perl正則表達(dá)式函數(shù)
    提供的方法有:

    •preg_grep —  返回與模式匹配的數(shù)組單元
    •preg_match_all — 進(jìn)行全局正則表達(dá)式匹配
    •preg_match — 進(jìn)行正則表達(dá)式匹配
    •preg_quote — 轉(zhuǎn)義正則表達(dá)式字符
    •preg_replace_callback — 用回調(diào)函數(shù)執(zhí)行正則表達(dá)式的搜索和替換
    •preg_replace — 執(zhí)行正則表達(dá)式的搜索和替換
    •preg_split — 用正則表達(dá)式分割字符串
    第二種是:POSIX正則表達(dá)式函數(shù)
    提供的方法有:

    •ereg_replace — 替換正則表達(dá)式
    •ereg — 正則表達(dá)式匹配
    •eregi_replace — 不區(qū)分大小寫(xiě)替換正則表達(dá)式
    •eregi — 不區(qū)分大小寫(xiě)的正則表達(dá)式匹配
    •split — 用正則表達(dá)式將字符串分割到數(shù)組中
    •spliti —  用正則表達(dá)式不區(qū)分大小寫(xiě)將字符串分割到數(shù)組中
    •sql_regcase —  產(chǎn)生用于不區(qū)分大小的匹配的正則表達(dá)式 

    六、總結(jié)

    正則表達(dá)式就是我們實(shí)現(xiàn)某個(gè)功能的一個(gè)工具,這個(gè)工具:

    1、功能強(qiáng)大
    正則表達(dá)式中各種限定符的不同組合會(huì)實(shí)現(xiàn)不同的功能,有時(shí)實(shí)現(xiàn)一個(gè)復(fù)雜的功能需要編寫(xiě)很長(zhǎng)的正則表達(dá)式,如何能精準(zhǔn)匹配,這就要考驗(yàn)一個(gè)程序員的能力了。

    2、簡(jiǎn)潔方便
    平常我們?cè)谶M(jìn)行字符串內(nèi)容查找,只能進(jìn)行某個(gè)特定字符串的查找,但是正則表達(dá)式可以幫助我們進(jìn)行模糊查找,更快更方便,僅僅需要一個(gè)正則表達(dá)式串。

    3、各種語(yǔ)言基本上都支持
    目前如JAVA、PHP、Javascript、C#、C++等主流語(yǔ)言都支持正則表達(dá)式。

    4、學(xué)習(xí)很簡(jiǎn)單,應(yīng)用很高深
    學(xué)習(xí)正則表達(dá)式很快也很簡(jiǎn)單,但是如何在實(shí)際開(kāi)發(fā)中編寫(xiě)出高效地,精準(zhǔn)地正則表達(dá)式,還是需要長(zhǎng)時(shí)間的嘗試和積累。

    如果想快速的入門推薦查看這篇文章:

    正則表達(dá)式30分鐘入門教程

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)