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

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

作者:開心石頭

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

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

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

  這里我向一家推薦一款專門的正則表達式編寫測試工具,PHPEdit公司的Regular Expression Editor工具。這是一個免費軟件,主要用來調試PHP使用的Perl兼容正則表達式函數。使用它可以方便的輸入目標字符串和正則表達式,并實時看到匹配的結果。可以到它的下載網頁去下載這個工具。

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

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


程序運行界面

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

  正則表達式的編寫思路

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

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

  如果你發現你定制模式匹配了過多的結果,一個好的方法是換個思路,與其考慮我的模式下一步需要匹配什么,不如考慮我的模式下一步需要避免匹配什么。我們可以用元字答“^”和字符類很容易的達成這種效果,這常常可以得到更精確的匹配。

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

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

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

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

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

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

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

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

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

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

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

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

導航

統計

常用鏈接

留言簿(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>
            激情文学一区| 日韩一级免费| 亚洲精品日本| 亚洲国产精品电影在线观看| 亚洲国产1区| 美女在线一区二区| 老司机aⅴ在线精品导航| 国内精品免费在线观看| 欧美99在线视频观看| 久久人人97超碰精品888| 久久精品综合| 91久久在线播放| 亚洲一区二区三区在线看| 亚洲精品美女免费| 久久久久久久高潮| 亚洲精品偷拍| 在线视频欧美日韩精品| 欧美影院精品一区| 亚洲电影第1页| 亚洲一区欧美二区| 国内综合精品午夜久久资源| 国产区亚洲区欧美区| 99在线精品视频| 亚洲日本成人女熟在线观看| 一区二区久久久久| 久久久亚洲欧洲日产国码αv| 亚洲国产视频a| 国产精品久久久对白| 国产欧美日韩一区二区三区在线 | 久久精品五月婷婷| 亚洲毛片网站| 欧美国产激情| 日韩视频在线播放| 久久久久久穴| 国产偷久久久精品专区| 制服丝袜亚洲播放| 欧美精品一区二区三| 久久久久久久综合色一本| 午夜精品理论片| 欧美不卡高清| 亚洲一区视频在线| 欧美激情四色| 亚洲国产福利在线| 激情成人综合| 国产一区二区三区免费不卡| 欧美色大人视频| 国语自产在线不卡| 国产中文一区| 亚洲一区二区视频在线| 亚洲午夜91| 亚洲大胆美女视频| 久久精品国产77777蜜臀| 欧美亚州在线观看| 99国产精品久久久久久久久久 | 亚洲精品视频免费观看| 久久综合久久88| 欧美一级视频免费在线观看| 亚洲一区国产一区| 亚洲大片av| 亚洲激情偷拍| 欧美一区三区二区在线观看| 亚洲第一狼人社区| 亚洲国产一区在线| 欧美精品尤物在线| 久久国产精品电影| 国产精品美女一区二区| 欧美日韩免费高清| 欧美视频在线观看免费网址| 欧美日韩视频在线一区二区 | 欧美mv日韩mv国产网站app| 欧美在线啊v一区| 久久久久se| 免费观看在线综合| 伊人色综合久久天天| 久久综合九色欧美综合狠狠| 亚洲激情在线视频| 欧美精品久久久久久久免费观看| 亚洲日本视频| 欧美亚洲综合在线| 亚洲免费中文字幕| 裸体丰满少妇做受久久99精品| 国产一区二区三区高清播放| 久久久亚洲精品一区二区三区| 久久久国产一区二区三区| 欧美黑人在线播放| 国产欧美日韩视频| 久久人人超碰| 亚洲欧美日韩国产综合在线| 久久久久久尹人网香蕉| 久久久久国产一区二区| 亚洲国产另类久久久精品极度| 亚洲福利在线看| 欧美日韩国产综合视频在线观看中文 | 一色屋精品亚洲香蕉网站| 亚洲免费av片| 欧美一二三视频| 久久精品国产一区二区电影| 亚洲国内欧美| 亚洲欧美美女| 日韩视频免费大全中文字幕| 久久久久久亚洲精品中文字幕 | 欧美精品久久久久a| 久久福利精品| 欧美激情欧美狂野欧美精品 | 午夜精品久久久久| 亚洲国产免费| 欧美一区视频在线| 一区二区激情| 欧美有码视频| 每日更新成人在线视频| 亚洲视频一区在线| 久久久久久91香蕉国产| 亚洲综合二区| 欧美激情精品久久久久久免费印度 | 欧美国产激情| 久久一区视频| 国产精品久久久久久超碰| 欧美激情网友自拍| 红桃视频成人| 欧美一区二区三区精品| 国产欧美一区二区精品性| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欲香欲色天天天综合和网| 欧美综合二区| 欧美视频在线视频| 亚洲综合激情| 亚洲午夜久久久久久尤物| 亚洲国产成人porn| 久久精品一区中文字幕| 亚洲欧洲午夜| 亚洲人精品午夜在线观看| 欧美国产三区| 欧美91福利在线观看| 国产又爽又黄的激情精品视频| 久久久亚洲午夜电影| 国产日韩欧美另类| 免费在线观看成人av| 欧美成人黑人xx视频免费观看| 最近看过的日韩成人| 久久国产精品99国产| 久久久久国产一区二区三区| 国产手机视频精品| 欧美在线播放| 亚洲少妇最新在线视频| 欧美大秀在线观看| 亚洲免费在线观看| 国产精品成人一区二区三区吃奶| 亚洲精品一区二区三区四区高清| 亚洲美女福利视频网站| 亚洲一区二区欧美| 欧美一级电影久久| 国产在线精品二区| 久久亚洲精品网站| 亚洲国产精品久久久久婷婷老年| 亚洲二区视频在线| 亚洲网站视频福利| 亚洲成色777777在线观看影院| 久久精品91| 亚洲一区免费看| 久久精品国产亚洲aⅴ| 久久理论片午夜琪琪电影网| 在线观看日韩专区| 一区二区欧美在线| 亚洲第一视频网站| 欧美国产精品日韩| 日韩特黄影片| 黑丝一区二区| 亚洲人精品午夜在线观看| 国产乱肥老妇国产一区二| 午夜在线视频一区二区区别| 亚洲日本久久| 欧美性猛交视频| 久久久久久久波多野高潮日日 | 亚洲第一级黄色片| 亚洲在线第一页| 91久久精品久久国产性色也91| 在线亚洲欧美| 久久av资源网| 国产精品午夜电影| 亚洲精品一区二区三区不| 欧美一区二区三区电影在线观看| 在线精品一区| 国产精品免费视频xxxx| 久久久久一区二区| 亚洲视频导航| 亚洲国产小视频在线观看| 性色一区二区| 亚洲免费观看高清在线观看 | 好男人免费精品视频| 亚洲网站视频福利| 亚洲夜间福利| 在线观看视频欧美| 国产日韩精品视频一区二区三区| 欧美国产三区| 亚洲裸体在线观看| 欧美aⅴ99久久黑人专区| 亚洲欧美日韩在线综合| 亚洲日本视频| 欧美日韩在线一区| 看欧美日韩国产|