




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第第7章章 正則表達(dá)式與正則表達(dá)式與Internet操作操作7.1 正則表達(dá)式正則表達(dá)式 7.2 Windows應(yīng)用程序中嵌入應(yīng)用程序中嵌入Web瀏覽器瀏覽器7.3 通過通過Internet搜索網(wǎng)絡(luò)資源搜索網(wǎng)絡(luò)資源27.1 正則表達(dá)式正則表達(dá)式 正則表達(dá)式提供了功能強大、靈活而又高效正則表達(dá)式提供了功能強大、靈活而又高效的方法來處理文本。的方法來處理文本。 正則表達(dá)式的全面模式匹配表示法使您可以正則表達(dá)式的全面模式匹配表示法使您可以快速分析大量文本以找到特定的字符模式;提取、快速分析大量文本以找到特定的字符模式;提取、編輯、替換或刪除文本子字符串;或?qū)⑻崛〉淖志庉?、替換或刪除文本子字符串;或
2、將提取的字符串添加到集合以生成報告。符串添加到集合以生成報告。 對于處理字符串的許多應(yīng)用程序而言正則表對于處理字符串的許多應(yīng)用程序而言正則表達(dá)式是不可缺少的工具。達(dá)式是不可缺少的工具。3 正則表達(dá)式:正則表達(dá)式: 用某種模式去匹配指定字符串的一種表示方式。用某種模式去匹配指定字符串的一種表示方式。 正則表達(dá)式由正則表達(dá)式由普通字符普通字符和和元字符元字符組成。組成。 普通字符:常使用的字符如字母、數(shù)字、漢字普通字符:常使用的字符如字母、數(shù)字、漢字等等 元字符:可以匹配某些字符形式的具有特殊含義元字符:可以匹配某些字符形式的具有特殊含義 的字符,其作用類似于的字符,其作用類似于DOS命令使用的通
3、配符。命令使用的通配符。4正則表達(dá)式基本書寫符號正則表達(dá)式基本書寫符號正則表達(dá)式限定符正則表達(dá)式限定符3. 匹配字符集匹配字符集 (1) 匹配字符集是預(yù)定義的用于正則表達(dá)式中的符號集。匹配字符集是預(yù)定義的用于正則表達(dá)式中的符號集。 (2) 如果字符串與字符集中的任何一個字符相匹配,它如果字符串與字符集中的任何一個字符相匹配,它就會找到這個匹配項。就會找到這個匹配項。4. 分組構(gòu)造分組構(gòu)造567891011125. 正則表達(dá)式舉例正則表達(dá)式舉例u非負(fù)整數(shù):非負(fù)整數(shù):“d+$ ”u正整數(shù):正整數(shù): “ 0-9*1-90-9*$” u非正整數(shù):非正整數(shù): “ (-d+)|(0+)$” u整數(shù):整數(shù):
4、 “ -?d+$” u英文字符串:英文字符串: “ A-Za-z+$” u英文字符數(shù)字串:英文字符數(shù)字串: “ A-Za-z0-9+$” u英數(shù)字加下劃線串:英數(shù)字加下劃線串: “w+$” uE-mail地址:地址:“w-+(.w-+)*w-+(.w-+)+$” uURL:“a-zA-Z+:/(w+(-w+)*)(.(w+(-w+)*)*(?s*)?$” 13示例示例 以下是以以下是以PHP的語法所寫的示例的語法所寫的示例 驗證字符串是否只含數(shù)字與英文,字符串長度并在驗證字符串是否只含數(shù)字與英文,字符串長度并在416個字符之間個字符之間 14簡易的臺灣簡易的臺灣身份證身份證字號驗證字號驗證 以
5、下示例是用以下示例是用 Perl 語言寫的,與上面的示例功能相同語言寫的,與上面的示例功能相同 print $str = a1234 = m:a-zA-Z0-94,16$: ? COMFIRM : FAILED;print $str = a1234 = mw12d8$ ? COMFIRM : INVAILD; 15常用正則表達(dá)式常用正則表達(dá)式用戶名用戶名/a-z0-9_-3,16$/密碼密碼/a-z0-9_-6,18$/十六進(jìn)制值十六進(jìn)制值/#?(a-f0-96|a-f0-93)$/電子郵箱電子郵箱/(a-z0-9_.-+)(da-z.-+).(a-z.2,6)$/URL/(https?:/)
6、?(da-z.-+).(a-z.2,6)(/w .-*)*/?$/IP 地址地址/(?:(?:250-5|20-40-9|01?0-90-9?).)3(?:250-5|20-40-9|01?0-90-9?)$/16HTML 標(biāo)簽標(biāo)簽/(a-z+)(.*)|s+/)$/Unicode編碼中的漢字范圍編碼中的漢字范圍/u4e00-u9fa5,0,$/17 Regex 類表示不可變(只讀)正則表達(dá)式類。它還包含各類表示不可變(只讀)正則表達(dá)式類。它還包含各 種靜態(tài)方法,允許在不顯式創(chuàng)建其他類的實例的情況下使種靜態(tài)方法,允許在不顯式創(chuàng)建其他類的實例的情況下使 用其他正則表達(dá)式類。用其他正則表達(dá)式類。
7、這里僅介紹這里僅介紹IsMatch方法。方法。IsMatch方法:方法:正則表達(dá)式在輸入字符串中是否找到匹配項。正則表達(dá)式在輸入字符串中是否找到匹配項。 該方法有四種重載的形式:該方法有四種重載的形式:u public bool IsMatch(string str); 表示在構(gòu)造函數(shù)中指定的正則表達(dá)式在表示在構(gòu)造函數(shù)中指定的正則表達(dá)式在str中是否找到匹配項。中是否找到匹配項。 18upublic bool IsMatch(string str, int start); 表示在構(gòu)造函數(shù)中指定的正則表達(dá)式在表示在構(gòu)造函數(shù)中指定的正則表達(dá)式在str的指定起始位置開始是否的指定起始位置開始是否找到
8、匹配項。參數(shù)找到匹配項。參數(shù)start表示開始搜索的字符位置。表示開始搜索的字符位置。upublic static bool IsMatch(string str, string pattern); 表示使用表示使用pattern參數(shù)中指定的正則表達(dá)式是否在參數(shù)中指定的正則表達(dá)式是否在str中找到匹配項。中找到匹配項。upublic static bool IsMatch(string str, string pattern, RegexOptions options); 表示使用表示使用pattern參數(shù)中指定的正則表達(dá)式和參數(shù)中指定的正則表達(dá)式和options枚舉提供的匹配枚舉提供的匹配選
9、項在選項在input中是否找到匹配項。其中中是否找到匹配項。其中options是是RegexOption枚舉值枚舉值的按位的按位“或或”組合。組合。19例例: Regex r = new Regex(0-9a-z3,5); string tests = abc, 123456, (aa22bb33), ab; foreach (string test in tests) if (r.IsMatch(test) Console.WriteLine(0中有匹配的項中有匹配的項, test); else Console.WriteLine(0中沒有匹配的項中沒有匹配的項, test); 結(jié)果結(jié)果:
10、ab無匹配項,其他均有匹配項無匹配項,其他均有匹配項20 【例【例7-1】編寫一個】編寫一個Windows應(yīng)用程序,輸入某個正應(yīng)用程序,輸入某個正則表達(dá)式和一個字符串,然后驗證該字符串中是則表達(dá)式和一個字符串,然后驗證該字符串中是否包含與正則表達(dá)式匹配的內(nèi)容。否包含與正則表達(dá)式匹配的內(nèi)容。 textBoxValidateStringtextBoxIsMatchReadOnly:TruetextBoxValidatedStringbuttonValidation21/單擊【開始驗證】按鈕觸發(fā)的事件單擊【開始驗證】按鈕觸發(fā)的事件private void buttonValidation_Click
11、(object sender, EventArgs e) if (r.IsMatch(textBoxValidatedString.Text) = true) textBoxIsMatch.Text = “有匹配項有匹配項; else textBoxIsMatch.Text = “沒有匹配項沒有匹配項; 22/ textBoxValidatedString成為活動控件時觸發(fā)的事件成為活動控件時觸發(fā)的事件private void textBoxValidatedString_Enter(object sender, EventArgs e) textBoxIsMatch.Clear();/ te
12、xtBoxValidateString成為活動控件時觸發(fā)的事件成為活動控件時觸發(fā)的事件private void textBoxValidateString_Enter(object sender, EventArgs e) textBoxIsMatch.Clear();23【例【例7-2】編寫一個】編寫一個Windows應(yīng)用程序,利用正則應(yīng)用程序,利用正則表達(dá)式驗證用戶注冊信息是否符合要求。表達(dá)式驗證用戶注冊信息是否符合要求。 textBoxName圖7-2 例7-2的設(shè)計界面textBoxAgetextBoxPasswordlabelNamelabelAgelabelPasswordbutt
13、onOK24/更改更改textBoxName.Text屬性值觸發(fā)的事件屬性值觸發(fā)的事件private void textBoxName_TextChanged(object sender, EventArgs e) labelName.Visible = !Regex.IsMatch(textBoxName.Text, u4e00-u9fa52,$);/更改更改textBoxAge.Text屬性值觸發(fā)的事件屬性值觸發(fā)的事件private void textBoxAge_TextChanged(object sender, EventArgs e) labelAge.Visible = !Reg
14、ex.IsMatch(textBoxAge.Text, d1,3$);25/更改更改textBoxPassword.Text屬性值觸發(fā)的事件屬性值觸發(fā)的事件private void textBoxPassword_TextChanged(object sender, EventArgs e) labelPassword.Visible = !Regex.IsMatch(textBoxPassword.Text, w5,$);/單擊【確定】按鈕觸發(fā)的事件單擊【確定】按鈕觸發(fā)的事件private void buttonOK_Click(object sender, EventArgs e) if
15、(labelName.Visible | labelAge.Visible | labelPassword.Visible) MessageBox.Show(請按要求輸入請按要求輸入, , MessageBoxButtons.OK, MessageBoxIcon.Hand); else MessageBox.Show(注冊驗證成功注冊驗證成功, , MessageBoxButtons.OK, MessageBoxIcon.Warning); 26 Match類表示單個正則表達(dá)式匹配操作的結(jié)果,得到的結(jié)類表示單個正則表達(dá)式匹配操作的結(jié)果,得到的結(jié)果是只讀的。該類沒有公共構(gòu)造函數(shù),而是用果是只讀的
16、。該類沒有公共構(gòu)造函數(shù),而是用Regex對象對象的的Match方法返回的結(jié)果創(chuàng)建該類的對象。例如:方法返回的結(jié)果創(chuàng)建該類的對象。例如: Regex r = new Regex(abc); Match m = r.Match(123abc456); if (m.Success) Console.WriteLine(找到匹配位置:找到匹配位置: + m.Index); Console.WriteLine(找到匹配結(jié)果:找到匹配結(jié)果: + m.Value); 運行結(jié)果:運行結(jié)果:找到匹配位置:找到匹配位置:3找到匹配結(jié)果:找到匹配結(jié)果:abc27 MatchCollection類表示成功的非重疊匹配
17、的序列,得到的集合是只類表示成功的非重疊匹配的序列,得到的集合是只讀的。該類同樣沒有公共構(gòu)造函數(shù),而是用讀的。該類同樣沒有公共構(gòu)造函數(shù),而是用Regex.Matches方法返回方法返回的結(jié)果創(chuàng)建該類的對象。例如:的結(jié)果創(chuàng)建該類的對象。例如: Regex r = new Regex(abc); MatchCollection mc = r.Matches(123abc4abcd); int count = mc.Count; String results = new Stringcount; int matchPosition = new intcount; for (int i = 0; i
18、count; i+) resultsi = mci.Value; matchPositioni = mci.Index; Console.WriteLine(第第0個匹配結(jié)果:個匹配結(jié)果:1,位置:,位置:2,i+1, resultsi, matchPositioni); 運行結(jié)果:運行結(jié)果:第第1個匹配結(jié)果:個匹配結(jié)果:abc,位置:,位置:3第第2個匹配結(jié)果:個匹配結(jié)果:abc,位置:,位置:728 Group類表示單個捕獲組的結(jié)果。當(dāng)與正則表達(dá)式匹配的子字符串類表示單個捕獲組的結(jié)果。當(dāng)與正則表達(dá)式匹配的子字符串有多組時,可以使用該類得到某一組的結(jié)果。例如:有多組時,可以使用該類得到某一組
19、的結(jié)果。例如: string text = One car red car blue car; string pat = (w+)s+(car); Regex r = new Regex(pat, RegexOptions.IgnoreCase); Match m = r.Match(text); int matchCount = 0; while (m.Success) Console.WriteLine(Match + (+matchCount); for (int i = 1; i = 2; i+) Group g = m.Groupsi; Console.WriteLine(strin
20、g.Format(Group0=1, i, g); CaptureCollection cc = g.Captures;29 for (int j = 0; j cc.Count; j+) Capture c = ccj; Console.WriteLine(string.Format( Capture0=1, Position=2, j, c, c.Index); m = m.NextMatch(); Console.ReadLine();30 輸出結(jié)果:輸出結(jié)果:Match1Group1=OneCapture0=One, Position=0Group2=carCapture0=car,
21、Position=4Match2Group1=redCapture0=red, Position=8Group2=carCapture0=car, Position=12Match3Group1=blueCapture0=blue, Position=16Group2=carCapture0=car, Position=21317.2 Windows應(yīng)用程序中嵌入應(yīng)用程序中嵌入Web瀏覽器瀏覽器WebBrower控件控件 通過此控件可以在通過此控件可以在 Windows 窗體客戶端應(yīng)用程序中顯示網(wǎng)窗體客戶端應(yīng)用程序中顯示網(wǎng)頁,復(fù)制應(yīng)用程序中的頁,復(fù)制應(yīng)用程序中的 Internet Explor
22、er Web 瀏覽功能,瀏覽功能,禁用默認(rèn)的禁用默認(rèn)的 Internet Explorer 功能,并將該控件用作簡單的功能,并將該控件用作簡單的 HTML 文檔查看器等。文檔查看器等。327.3 通過通過Internet搜索網(wǎng)絡(luò)資源搜索網(wǎng)絡(luò)資源uWebClient類類 在在System.Net命名空間下的命名空間下的WebClient類提供向類提供向URI標(biāo)識的標(biāo)識的任何本地、任何本地、Intranet或或Internet資源發(fā)送數(shù)據(jù)以及從這些資資源發(fā)送數(shù)據(jù)以及從這些資源接收數(shù)據(jù)的公共方法。源接收數(shù)據(jù)的公共方法。 通過此類從通過此類從Web站點下載文件兩種方式:站點下載文件兩種方式: 1. 直接保存為本地文件直接保存為本地文件 2. 通過流進(jìn)行讀
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度紅木家具定制與古建筑修復(fù)合同
- 長春2025年度貨運合同糾紛律師調(diào)解服務(wù)協(xié)議
- 2025年度租賃合同解除函及房屋租賃市場調(diào)研報告
- 產(chǎn)品入庫管理表格(零售業(yè)特定)
- 汽車維修技術(shù)故障診斷與排除試卷及答案解析
- 租賃平臺房東與租客權(quán)益保障協(xié)議
- 農(nóng)村環(huán)境保護與生態(tài)恢復(fù)項目合作合同書
- 鄉(xiāng)村新型產(chǎn)業(yè)開發(fā)項目協(xié)議
- 史記中的人物故事深度解讀
- 鋪貨擔(dān)保合同合作協(xié)議
- 人文社科類橫向課題技術(shù)服務(wù)合同5篇
- 網(wǎng)絡(luò)工程師(軟考)考試(重點)題庫300題(含答案解析)
- 統(tǒng)編版八年級語文上冊第六單元作業(yè)設(shè)計
- 中建通風(fēng)與空調(diào)施工方案
- 2024-2025年江蘇專轉(zhuǎn)本英語歷年真題(含答案)
- 永磁滾筒設(shè)備操作規(guī)程
- 2024解析:第五章透鏡及其應(yīng)用-講核心(解析版)
- 《子宮肉瘤》課件
- 大班科學(xué)活動小實驗
- 新能源汽車概論課件 2.1認(rèn)知新能源汽車動力電池技術(shù)
- 湖南財政經(jīng)濟學(xué)院《中國文化史》2021-2022學(xué)年第一學(xué)期期末試卷
評論
0/150
提交評論