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

教你使用正則表達式

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国产精品私拍| 91久久精品一区二区三区| 男同欧美伦乱| 亚洲激情av在线| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久成人18免费观看| 欧美在线综合视频| 免费高清在线视频一区·| 欧美片网站免费| 国产美女精品| 亚洲国产天堂久久综合网| 一区二区国产日产| 久久国产精品久久久久久电车| 嫩草国产精品入口| 一区二区欧美日韩视频| 欧美在线亚洲在线| 欧美日韩成人一区二区三区| 国产日韩精品一区二区浪潮av| 亚洲第一页自拍| 欧美一级日韩一级| 亚洲黄色一区二区三区| 午夜欧美不卡精品aaaaa| 欧美电影在线观看完整版| 国产美女精品人人做人人爽| 亚洲精品国产精品国自产观看| 午夜精品一区二区在线观看| 欧美激情aaaa| 久久er精品视频| 欧美性色aⅴ视频一区日韩精品| 黄色资源网久久资源365| 国产精品99久久久久久有的能看| 久久精品亚洲精品| 99精品欧美一区| 蜜臀91精品一区二区三区| 国产日韩欧美亚洲一区| 亚洲一区日韩| 亚洲精品护士| 你懂的国产精品| 伊人成人在线| 久久九九国产精品| 亚洲线精品一区二区三区八戒| 欧美成人网在线| 亚洲国产美女久久久久 | 一本一道久久综合狠狠老精东影业 | 亚洲欧洲一区二区三区| 亚洲黄色在线| 久久免费偷拍视频| 国外成人在线| 久久综合狠狠综合久久综青草| 亚洲午夜久久久久久久久电影网| 欧美日韩国产亚洲一区| 99这里有精品| 亚洲激情av| 欧美巨乳在线观看| 亚洲精品字幕| 亚洲国内自拍| 欧美黄色aaaa| 一级日韩一区在线观看| 亚洲欧洲另类| 欧美精品v日韩精品v韩国精品v | 亚洲二区三区四区| 久久婷婷久久| 亚洲国产精品久久久久婷婷884 | 国产自产女人91一区在线观看| 午夜精品在线| 欧美一区二区三区视频免费| 国产免费一区二区三区香蕉精| 午夜久久久久| 欧美在线免费| 亚洲欧洲精品一区二区三区| 91久久久一线二线三线品牌| 欧美日韩精品免费在线观看视频| 正在播放欧美视频| 亚洲曰本av电影| 精品av久久707| 亚洲国产欧美日韩| 欧美日一区二区在线观看 | 亚洲视频一区二区免费在线观看| 国产精品福利网| 久久精品视频免费播放| 免费黄网站欧美| 亚洲一区精品视频| 欧美有码视频| 亚洲激情在线激情| 亚洲视频电影在线| 在线不卡a资源高清| 亚洲精品一区二区三| 国产一区二区三区四区老人| 亚洲第一天堂无码专区| 国产精品久久久久久超碰 | 国产九九精品| 欧美黄色日本| 狠狠色丁香久久婷婷综合_中| 麻豆精品视频在线观看| 欧美福利影院| 香蕉久久精品日日躁夜夜躁| 久久综合五月| 亚洲欧美三级在线| 欧美aⅴ99久久黑人专区| 午夜精品影院| 欧美母乳在线| 裸体一区二区三区| 国产精品va在线播放| 欧美好骚综合网| 国产午夜精品久久久久久免费视| 亚洲高清视频一区二区| 国产综合欧美在线看| 99视频有精品| 亚洲美女尤物影院| 玖玖玖免费嫩草在线影院一区| 欧美一区=区| 欧美视频在线观看| 亚洲精品视频一区| 亚洲韩国精品一区| 久久久不卡网国产精品一区| 午夜亚洲福利| 国产精品进线69影院| 99国产一区| 99re66热这里只有精品3直播| 美女尤物久久精品| 美女国内精品自产拍在线播放| 国产精品一区久久久久| 一本一本久久a久久精品综合妖精| 亚洲激情亚洲| 欧美成人在线免费观看| 欧美寡妇偷汉性猛交| 狠狠色狠狠色综合日日五| 午夜精品福利一区二区蜜股av| 亚洲视频综合| 欧美午夜影院| 亚洲图片在线| 午夜在线观看免费一区| 国产精品久久中文| 亚洲欧美偷拍卡通变态| 久久久国产视频91| 在线精品国产欧美| 美国十次成人| 亚洲精品免费观看| 亚洲伊人伊色伊影伊综合网| 国产精品久久午夜| 欧美在线免费视频| 欧美成人免费一级人片100| 亚洲精品在线电影| 欧美色一级片| 欧美一区二区高清| 久久综合亚州| 亚洲人成网站在线播| 欧美日韩一区二区三区在线| 一本色道久久综合亚洲精品高清 | 亚洲精品久久在线| 亚洲欧美日韩另类| 国产一区二区毛片| 久久影音先锋| 亚洲乱码久久| 久久成年人视频| 亚洲高清在线观看一区| 欧美成人日本| 亚洲一区二区三区高清| 久久成人av少妇免费| 蜜桃av久久久亚洲精品| 亚洲精品综合| 国产三级欧美三级| 玖玖玖国产精品| 在线亚洲一区二区| 浪潮色综合久久天堂| 9久re热视频在线精品| 国产精品丝袜91| 久久久久一区| 中文一区二区| 欧美电影免费观看| 亚洲欧美视频在线观看视频| 性欧美1819sex性高清| 欧美高清视频www夜色资源网| 亚洲视频观看| 国产亚洲精品久久久| 欧美激情综合在线| 亚洲色图自拍| 免费在线欧美视频| 亚洲伊人伊色伊影伊综合网| 国产专区一区| 欧美午夜不卡视频| 久久综合色8888| 一本久道久久综合婷婷鲸鱼| 久久躁日日躁aaaaxxxx| 激情懂色av一区av二区av| 欧美性大战久久久久久久蜜臀| 久久久久.com| 亚洲专区免费| 日韩视频免费大全中文字幕| 免费看成人av| 性欧美8khd高清极品| 亚洲乱码国产乱码精品精天堂| 国产一区二区三区四区三区四| 国产精品xnxxcom| 免费成人黄色片| 午夜亚洲福利在线老司机| 日韩一级大片|