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

教你使用正則表達式

Posted on 2008-07-22 10:13 RichardHe 閱讀(456) 評論(0)  編輯 收藏 引用 所屬分類: [再轉]

教你使用正則表達式

下載源代碼

很久沒有VCKbase發表文章了,這次發表一些比較基礎的文章吧!看過"保證你現在和未來不失業的十種關鍵技術"這篇文章了吧,這次我就拿出一個不會讓你失業的編程技術講講吧,老蝦們千萬不要拿雞蛋砸我,我只是寫給初學者的!
關于正則表達式的教程和用法網上有很多的資源,基本的用法我講了也是浪費你的眼力,所以我會以一個實例來教你學習正則表達式,我兩年前做的一個MIS 中使用過正則式,檢驗用戶輸入的日期是否為正確的日期格式!分析完這個正則表達式后,對于正則表達式你絕對會有一個深深的認識!但是還不能說你精通,當你 可能用正則表達式寫一個編譯器的時候,你就可以精通了!
“磨刀不誤砍柴工”,要使用正則表達式,我們還要使用支持正則表達式的語言,解釋性語言Ruby,Perl,Python等都支持正則表達 式,C#,Java,VB.net等也支持正則表達式,C++還需要第三方類庫才能支持,VC.net提供了一個很好的正則表達式類庫 CATLRegExp(全世界效率最高的正則表達式庫哦),可是卻不能在VC6上使用,要在VC6上使用,可以使用VBS(Microsoft VBScript Regular Expression 5.5)來處理正則表達式,這是一個COM,拿一個COM來用我還是情愿用Boost庫.

使用Boost庫的時候,你需要編譯庫后你才能使用,不過這很容易。
1.下載Boost庫
3.設定環境變量(以我本機的環境變量設定為例)





2.進入 boost_1_32_0\libs\regex\build 目錄中,你可以看到vc6.mak文件 nmake vc6.mak就可以了,跟著會產生lib和dll文件,把它拷貝到你的程序目錄下就可使用了!

你也可以全部編譯,不過我只需要正則表達式庫,所以我只編譯這部分!

好了,砍柴刀磨好了!我們就開始正則表達式的實踐吧!

當時我負責的MIS是醫院的一個血液檢驗輸入模塊,要求輸入的日期必須是合法的,這是第一要求,不然檢驗單就會報廢。輸入日期是可以 2006.04.02 或 2006/04/02 或 2006.4.2 或 2006/4/2 的格式,而且日期還是要合法的,比如說不可以出現 2006.02.31, 2006.4.41 這樣的日期,不排除輸入人員工作繁記忙輸入錯誤會出現這種情況。
好了,用正則表達式如何解決這個問題,首先正則表達式是一個對文本匹配模式的使用方法,記得正則表達式的關鍵字用法是沒有用的,各種語言的正則表達式中的關鍵字用法是不同的,要認識文本中字符的模式.比如說對以上日期的表示可以用正則表達式表示為
"^\\d{4}[\\s\\.-/]\\d{1,2}[\\s\\.-/]\\d{1,2}$" 但這是完全錯誤的,用文字對這句正則表達式的描述為字符串是由三組數字組成,每一組由四個數組成,第二和第三組由一個或兩個數字組成,中間帶有空格 或"/",4003.9/12,3344.0.40 都會被判為合法的字符,這就是錯誤的用法!有什么或以判別呢!
有閏日的年份叫閏年,一般年份365天,閏年為366天(二月則有29天),閏年的計算方法:公元紀年的年數可以被四整除,即為閏年;被100整除而 不能被400整除為平年;被100整除也可被400整除的為閏年.則這樣我們可以這樣設計正則表達式,第一個是要求其格式統一,第二個是要求其能正確表達 閏年!1000/2/29 合法, 2000/2/29 合法,1900/2/29 非法.
想一想,一年中不論閏年或平年有的月份都是固定的,1,3,5,7,8,10,12月都是 31天, 4, 6, 9, 11 月都是30 天, 2 月可能為 28 或 29天,我們則可以這樣判斷,除 2 月外, 1 到 12 月中日期為 29, 30 天內的都為合法,1,3,5,7,8,10,12月為31天的都為合法, 1 月到 12 月為 28 天的都為合法, 剩下的只要判斷當年是否為閏年就行了,是閏年 2月29日就合法,否則非法!!!
呵,結果就出來了,用"或"把三條正則表達式組合起來就行了,第一條是判斷除2月外日期的表達式,第二條是1到12 月都是1-28天的表達式,最后一條是判斷是否閏年及合法2月的表達式,若符合其中一條的都為正確的日期.

第一條可以這樣寫除 2 月外 1 到 12 月都為 30 天的表達式為 (?:0?[1,3-9]|1[0-2])-(?:29|30)

除2 月外 1,3,5,7,8,10,12月都是 31天, ((?:0?[13578]|1[02])-31), 兩條合并起來就是:
(??:0?[1,3-9]|1[0-2])-(?:29|30)|((?:0?[13578]|1[02])-31)) 第二條可以這樣寫 (?:0?[1-9]|1[0-2])-(?:0?[1-9]|1\d|2[0-8])

第三條表達式就是要求表示閏年了,能被4 整除的四位數是怎么組成的呢? 可以看出,四位數中最后兩位能被四整除都可以得出這個四位數能被4整除,100內為4的倍數的值為 04,08,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96, 能被100與400整除的四位數則可以為##00的形式了
則這樣的閏年判別可以為:
(\d\d(?:0[48]|[2468][048]|[13579][26]))與 (?:0[48]00|[2468][048]00|[13579][26]00)合并后再加入2月日期合并為:
((?\d\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))-0?2-29)   這樣就可得出一條正確的表達式了:
^(?[0-9] {4}-(?:(?:0?[1,3-9]|1[0-2])-(?:29|30)|((?:0?[13578]|1[02])-31)))|([0-9] {4}-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1\d|2[0-8]))|(((?:(\d\d(?:0[48]|[2468] [048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))-0?2-29)))$ 這條表達式匹配的日期為2004-02-29,2004-2-29,不匹配2007-2-29,格式固定為####-##-##,只有輸入日期正確了 才會匹配。



這樣就完成一條正則表達式了,不要被嚇倒,當你對正則表達式理解越深刻的時候,你才發現它的優美!

在平時的工作中,你可以把一些常用的正則表達式封裝成dll,當使用的時候,你可以方便地調用,提高你的效率!
這兒我順便給出一些常用的正則表達!

合法Email的表達式
^([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9] [0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}| (25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])$ 合法時間表示表達式[1:00 AM], [12:00 PM], [1:00am]
^(1|01|2|02|3|03|4|04|5|05|6|06|7|07|8|08|9|09|10|11|12{1,2}):(([0-5]{1}[0-9]{1}\s{0,1})([AM|PM|am|pm]{2,2}))\W{0}$ 網站連接:
[http://207.68.172.254/home.ashx], [ftp://ftp.netscape.com/], [https://www.brinkster.com/login.asp] ^((https?|ftp)\://((\[?(\d{1,3}\.){3}\d{1,3}\]?)|(([-a-zA-Z0-9]+\.)+[a-zA-Z]{2,4}))(\:\d+)?(/[-a-zA-Z0-9._?,''+&%$#=~\\]+)*/?)$

posts - 94, comments - 138, trackbacks - 0, articles - 94

Copyright © RichardHe

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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国产精品久久久久久久| 国产欧美综合在线| 久久麻豆一区二区| 久久久久成人精品免费播放动漫| 欧美高潮视频| 夜夜嗨av一区二区三区中文字幕 | 国产女人水真多18毛片18精品视频| 久久久久久穴| 亚洲国产精品久久精品怡红院 | 99精品热视频只有精品10| 亚洲欧美日本精品| 久久综合色播五月| 99国内精品久久| 亚洲免费综合| 麻豆成人91精品二区三区| 欧美大片91| 国产亚洲毛片| 日韩视频在线永久播放| 久久高清一区| 亚洲一二区在线| 欧美大秀在线观看| 狠狠色香婷婷久久亚洲精品| 亚洲国产精品成人精品| 欧美一级久久久久久久大片| 日韩视频免费在线观看| 午夜精品久久久久久久久久久| 久久精品亚洲乱码伦伦中文 | 在线综合亚洲欧美在线视频| 欧美国产极速在线| 亚洲三级国产| 欧美亚洲网站| 亚洲欧美国产制服动漫| 欧美性事免费在线观看| 一区二区三区日韩精品| 日韩视频在线免费| 国产精品vip| 欧美中文字幕在线| 久久香蕉国产线看观看网| 国产婷婷精品| 久久伊人一区二区| 鲁大师影院一区二区三区| 亚洲激情视频网站| 99精品福利视频| 国产精品美女久久久| 欧美在线观看网站| 能在线观看的日韩av| 亚洲国产精品成人精品| 亚洲国产日韩欧美在线图片| 久久激情网站| 中文精品视频| 欧美在线一区二区三区| 99在线精品视频| 久久久999成人| 亚洲在线免费| 欧美理论电影在线观看| 久久婷婷av| 国产精品久久久久婷婷| 欧美国产第一页| 久久全国免费视频| 欧美日韩在线播放一区二区| 亚洲欧美中文字幕| 免费一级欧美在线大片| 亚洲一区二区久久| 欧美国产精品久久| 香蕉久久a毛片| 欧美系列亚洲系列| 欧美激情视频一区二区三区免费 | 欧美国产先锋| 久久一区二区三区四区| 国产精品久久久久9999| 亚洲区中文字幕| 91久久久精品| 久久免费一区| 亚洲第一色中文字幕| 亚洲国产毛片完整版| 久久一日本道色综合久久| 欧美激情视频在线播放| 亚洲国产精品ⅴa在线观看| 久久一区二区三区四区五区| 亚洲国产高清aⅴ视频| 亚洲三级影片| 国产精品福利片| 久久久久国产精品一区二区| 久久在线免费观看视频| 亚洲精品久久久久久久久| 免费在线成人av| 午夜免费日韩视频| 欧美成人免费在线观看| 亚洲香蕉网站| 激情久久久久久久| 欧美网站在线观看| 久久综合五月| 欧美亚洲一区二区在线观看| 国产欧美日韩伦理| 久久久噜噜噜久久久| 久久爱www久久做| 伊人精品久久久久7777| 国产精品成人在线| 欧美激情精品久久久| 久久久久99精品国产片| 一本色道久久综合亚洲精品婷婷| 久久先锋影音| 欧美在线一区二区三区| 亚洲一级一区| 亚洲一区二区免费看| 一本色道久久综合亚洲二区三区| 亚洲日本一区二区| 亚洲精品激情| 亚洲一卡二卡三卡四卡五卡| 日韩视频在线你懂得| 日韩一级大片在线| 一区二区免费在线播放| 夜夜嗨av一区二区三区中文字幕 | 每日更新成人在线视频| 久久亚洲欧美| 免费高清在线视频一区·| 欧美成人在线网站| 最新亚洲激情| 亚洲综合色在线| 久久久噜噜噜久噜久久| 欧美69wwwcom| 国产精品国产a| 狠狠色丁香久久婷婷综合丁香| 一区二区三区我不卡| 亚洲天堂成人| 久久综合网色—综合色88| 亚洲激情视频网| 午夜国产精品视频| 欧美激情亚洲| 国产亚洲人成网站在线观看| 久久久久久久91| 欧美日韩精品在线观看| 国产亚洲aⅴaaaaaa毛片| 一区二区成人精品| 久久一区视频| 午夜在线a亚洲v天堂网2018| 欧美精品久久久久久久久老牛影院 | 久久亚洲综合色| 亚洲视频在线二区| 欧美第一黄网免费网站| 国产日韩欧美一区二区三区在线观看| 亚洲精品久久嫩草网站秘色 | 欧美成人69| 狠狠爱www人成狠狠爱综合网| 亚洲欧美999| 99视频热这里只有精品免费| 欧美不卡视频| 亚洲精品乱码久久久久久按摩观 | 国产精品私人影院| 99视频超级精品| 亚洲国产视频a| 欧美顶级大胆免费视频| 狠狠色丁香婷婷综合久久片| 久久免费少妇高潮久久精品99| 日韩视频第一页| 国产精品v欧美精品v日韩| 亚洲免费综合| 亚洲午夜国产一区99re久久| 国产精品国产三级国产aⅴ浪潮| 欧美一级久久| 欧美成人视屏| 欧美一区成人| 免费欧美在线视频| 亚洲欧美日韩一区二区三区在线观看 | 国内精品视频666| 亚洲国产精品久久久久久女王| 欧美激情亚洲国产| 欧美在线视频日韩| 美女网站在线免费欧美精品| 一区二区三区四区蜜桃| 夜色激情一区二区| 在线成人国产| 中国成人黄色视屏| 一区二区三区视频在线看| 免费人成精品欧美精品| 亚洲欧美福利一区二区| 久久九九全国免费精品观看| 亚洲一区二区成人在线观看| 久久一本综合频道| 欧美亚洲视频| 欧美日本三级| 亚洲精品欧美一区二区三区| 一区免费在线| 免费在线看成人av| 久久精品在这里| 国产精品午夜在线| 亚洲综合二区| 久久久久九九九九| 黄色一区二区三区| 久久一区二区三区国产精品| 免费日韩av电影| 一区在线免费| 久久一二三国产| 亚洲精品国产精品国产自| 中文日韩欧美| 国产喷白浆一区二区三区| 久久国产精品免费一区|