青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

教程精選:正則表達式快速入門(五)

作者:開心石頭

  在上一篇文章里,我們介紹了正則表達式中的遞歸與替換,現(xiàn)在讓我們接觸一個學習正則表達式時方便測試使用的工具,并介紹一些正則表達式的編寫思路。

  一個學習正則表達式的便捷工具

  學習正則表達式最好的方法當然是實踐,不過支持正則表達式的工具雖多,但如果僅僅用來做練習卻不是很方便。

  這里我向一家推薦一款專門的正則表達式編寫測試工具,PHPEdit公司的Regular Expression Editor工具。這是一個免費軟件,主要用來調(diào)試PHP使用的Perl兼容正則表達式函數(shù)。使用它可以方便的輸入目標字符串和正則表達式,并實時看到匹配的結(jié)果??梢缘剿?a target=_blank>下載網(wǎng)頁去下載這個工具。

  程序的界面非常簡明,不過使用中發(fā)現(xiàn),它的一些功能使用起來好像有問題,只有preg_match_all和preg_replace功能正常,另外在匹配模式輸入框中,不要加模式定界符,程序好像把該輸入框中的全部內(nèi)容都作為模式來解析。

  好在做為一個正則表達式的練習工具,它的功能是足夠了,下面是它的運行界面。


程序運行界面

  文中提到的各個例子都可以在里面進行測試,在最上面的框里輸入模式,把目標字符串寫進中間的輸入框,點擊“run the regxwp”按鈕可以在下面得到匹配結(jié)果。

  正則表達式的編寫思路

  一個避免過多匹配的小技巧

  前面我們已經(jīng)多此談到書寫不合理的正則表達式引起過多匹配的問題,現(xiàn)在的問題是,如何可以盡量避免類似的情況發(fā)生。這里有個小小的技巧。

  如果你發(fā)現(xiàn)你定制模式匹配了過多的結(jié)果,一個好的方法是換個思路,與其考慮我的模式下一步需要匹配什么,不如考慮我的模式下一步需要避免匹配什么。我們可以用元字答“^”和字符類很容易的達成這種效果,這常??梢缘玫礁_的匹配。

  為了說明這種思路的好處我們先來舉一個與正則表達式無關(guān)的例子,考慮這樣一個問題,你把一個骰子一次拋出6的概率是六分之一,如果讓你擲六次,擲出一個6的概率是多少呢?

  可能有人會這么算,一次的概率是1/6,六次是就是6個1/6,加起來等于1。這個結(jié)果明顯是錯的,雖然你擲了六次,但肯定不能保證必然會擲出一個6。從正向的思路解這道題看上去有點難。

  如果我們換個思路,解決的方法就明確多了。我們可以把這個題的問法改成這樣,如果讓你擲6次骰子,每一次都擲不出6的概率是多少?這個問題就好解多了,根據(jù)概率的乘法原理,每一次擲出不是6的點數(shù)的概率是5/6,而6次中每一次都不是6的概率是5/6的6次方,大概等于33%的樣子,然后用1減去這個數(shù)字就可以得到我們需要的答案。

  你可以把模式中每部分的匹配看作擲一次骰子的過程,每一部分的匹配概率與總匹配概率的情況與我們上面這個例子非常相似。

  如何提高正則表達式的解析效率

  對同樣匹配內(nèi)容的正則表達式而言,一些模式往往比另外一些模式更有效率。舉一個簡單的例子,使用字符類“[aeiou]”會比使用分支選擇型模式“(a|e|i|o|u).”更有效,一般而言,使用盡可能簡單和基本的模式通過會得到更高的效率。

  應該盡可能的慎用相互嵌套的無限重復量詞,當遇到不匹配的目標字符串時,對字符串的解析有可能花掉很可觀的時間。比如下面這個模式片斷“(a+)*”,當遇到不匹配的目標字符串“aaaa”時,解析器會對它嘗試33種不同的匹配方法,這個數(shù)目會隨不匹配字符串長度的增加而極快的增長。

  一些正則表達式工具對一些特定的模式匹配進行了優(yōu)化以提高效率,了解你使用的正則表達式工作做過些什么優(yōu)化并盡可能利用經(jīng)過優(yōu)化的模式可以大大提高你的正則表達式執(zhí)行效率。例如,PHP對形如/a+)*b /這樣的模式的解析進行了優(yōu)化,當模式結(jié)尾是一個確定的字符時,解析器會先查找目標的結(jié)尾是否符合模式,如果否則立刻返回失敗的匹配結(jié)果并停止解析。如果將上面的樣式改為“(a+)*\d”時,因為結(jié)尾不再是一個確定的字符,此模式會按正常的過程解析。如果你想看一下兩者效果的差異,你在我們前面提到的工具中,把目標字符串設(shè)置成25個小寫的a字符,然后分別測試兩個模式,前者立刻就結(jié)束了,而后者需要等待約一秒(筆者使用的是XP1700+處理器)。

  除了盡可能利用經(jīng)過優(yōu)化的模式,對一些模式進行重新構(gòu)造也可以大大提高效率。我們在介紹后向斷言時介紹過的那個利用后向斷言結(jié)合一次性子模式匹配結(jié)尾的字符的方法就是一個很好的例子。

  這里我們準備結(jié)束這個教程,由于篇幅和本人水平的限制文中可能會有很多疏漏,還要請求大家諒解。對正則表達式介紹最全面的可能還是Perl相關(guān)的一些文檔和著作,如果想對正則表達式進行更深入的了解可以參看Jeffrey Friedl 寫的“Mastering Regular Expressions”一書,里面有很多例子。不過我覺得在了解正則表達式基本概念后,還是仔細讀一下自己經(jīng)常使用的相關(guān)工具里的正則表達式相關(guān)部分更實用一些,最后,還是那句話,實踐出真知,希望大家在不斷實踐中更好的掌握正則表達式的使用。

posted on 2007-04-22 17:21 PeakGao 閱讀(232) 評論(0)  編輯 收藏 引用

<2007年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

導航

統(tǒng)計

常用鏈接

留言簿(9)

隨筆分類(67)

隨筆檔案(65)

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品视频免费观看| 亚洲激情国产| 久久国产精品久久国产精品| 亚洲精品国精品久久99热| 国产日韩欧美在线播放不卡| 欧美激情性爽国产精品17p| 久久精彩免费视频| 欧美影院午夜播放| 久久成人亚洲| 久久精品女人天堂| 久久青草欧美一区二区三区| 久久精品一区二区| 久久亚洲精品中文字幕冲田杏梨| 久久精品日韩| 久久这里只有| 香蕉久久夜色精品| 在线亚洲精品福利网址导航| 91久久精品美女高潮| 性亚洲最疯狂xxxx高清| 亚洲欧美在线免费观看| 欧美一区二视频| 久久深夜福利免费观看| 欧美成人情趣视频| 亚洲娇小video精品| 在线视频你懂得一区| 亚洲欧美日韩专区| 欧美日本一区二区视频在线观看 | 欧美福利视频网站| 欧美好吊妞视频| 欧美精品偷拍| 国产精品久久久久久五月尺| 国产视频一区在线观看| 亚洲电影观看| 亚洲一区二区久久| 久久福利电影| 欧美主播一区二区三区| 欧美刺激性大交免费视频| 亚洲精品在线二区| 午夜欧美大片免费观看| 女仆av观看一区| 国产精品美女视频网站| 亚洲国产成人久久综合| 性欧美8khd高清极品| 欧美电影电视剧在线观看| 亚洲先锋成人| 欧美jjzz| 黄网站免费久久| 午夜久久tv| 亚洲国产精品一区| 欧美伊人久久久久久久久影院| 欧美国产亚洲视频| 欧美日韩视频在线一区二区| 欧美国产综合视频| 在线精品国精品国产尤物884a| 亚洲视频免费观看| 免播放器亚洲| 亚洲欧美一级二级三级| 欧美日韩国产经典色站一区二区三区| 国产日韩高清一区二区三区在线| 1769国产精品| 亚洲精品日韩精品| 久久久精品性| 亚洲欧美日韩直播| 国产精品乱码人人做人人爱 | 亚洲免费中文| 日韩视频国产视频| 欧美精品一区二区三区很污很色的 | 国产综合婷婷| 午夜老司机精品| av不卡在线观看| 欧美精品导航| 亚洲福利视频专区| 欧美成人一区二免费视频软件| 久久国产一二区| 国产资源精品在线观看| 欧美一区二区视频在线观看2020 | 欧美三级第一页| 国产精品制服诱惑| 一区二区三区高清在线观看| 欧美99在线视频观看| 亚洲一级黄色| 国产精品嫩草99av在线| 午夜精品久久久久久久99樱桃| 一本色道久久加勒比精品| 欧美国产另类| 亚洲日本在线观看| 久久成人国产| 久久精品五月婷婷| 在线欧美日韩国产| 亚洲精品1区| 欧美日韩人人澡狠狠躁视频| 亚洲精品视频在线| 亚洲国产欧美不卡在线观看| 欧美久久久久久蜜桃| 亚洲免费视频中文字幕| 羞羞色国产精品| 国产精品免费看片| 久久成人一区二区| 久久午夜色播影院免费高清| 亚洲欧洲日本国产| 夜夜精品视频| 狠狠色2019综合网| 亚洲国产精品va在线看黑人动漫 | 亚洲国产欧美在线| 国产精品国产精品| 亚洲欧美卡通另类91av| 亚洲成色精品| 国产精品伦理| 欧美成人a视频| 欧美精品99| 久久成人精品| 免费一级欧美片在线观看| 亚洲专区一区| 久久综合九色欧美综合狠狠| 99视频精品| 性做久久久久久久免费看| 亚洲韩国青草视频| 亚洲伊人久久综合| 亚洲黄色成人| 亚洲欧美美女| 在线一区二区三区做爰视频网站| 性做久久久久久久久| 国产亚洲一区在线| 免费成人小视频| 国产精品电影网站| 免费亚洲电影在线| 国产欧美一区二区白浆黑人| 欧美xart系列高清| 欧美a级片网站| 久久精品久久99精品久久| 欧美日韩一级黄| 欧美激情欧美激情在线五月| 国产精品女主播| 老鸭窝亚洲一区二区三区| 国产精品乱码| 日韩视频中文字幕| 亚洲激情一区二区| 在线一区二区三区四区| 亚洲精品一区二区三区蜜桃久| 国产午夜精品一区二区三区欧美 | 欧美人与性动交α欧美精品济南到 | 99国产精品久久久久老师| 亚洲国产成人av在线| 亚洲最新中文字幕| 亚洲国产欧美一区二区三区同亚洲 | 在线日韩视频| 美国三级日本三级久久99| 亚洲国产欧美一区二区三区久久| 亚洲靠逼com| 欧美日韩成人一区二区| 一区二区精品国产| 久久本道综合色狠狠五月| 在线日韩欧美视频| 欧美日韩国产在线观看| 亚洲在线视频免费观看| 久久免费精品视频| 亚洲国产综合91精品麻豆| 欧美日韩一区国产| 欧美综合激情网| 91久久一区二区| 久久成人资源| 亚洲精品少妇网址| 国产欧美在线播放| 欧美激情亚洲一区| 亚洲午夜成aⅴ人片| 久久综合久久综合久久| 日韩天堂在线视频| 国产亚洲制服色| 欧美黄色网络| 久久国产精品久久久久久| 最新日韩在线视频| 久久精品盗摄| 一区二区成人精品 | 国产真实久久| 欧美日韩激情小视频| 欧美一区三区三区高中清蜜桃| 亚洲成色www久久网站| 性8sex亚洲区入口| 日韩亚洲在线观看| 黄色资源网久久资源365| 国产精品高潮在线| 欧美成人精品一区| 欧美一级专区| 亚洲少妇一区| 最新高清无码专区| 老司机成人在线视频| 香蕉国产精品偷在线观看不卡| 亚洲精品自在在线观看| 狠狠色噜噜狠狠狠狠色吗综合| 国产精品国色综合久久| 欧美国产一区二区| 蜜臀av在线播放一区二区三区| 日韩午夜电影| 亚洲黄一区二区三区| 久久成人精品| 欧美亚洲自偷自偷| 国产精品免费看片| 日韩亚洲不卡在线| 久久久久欧美精品| 欧美一区二区三区四区在线 |