版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、正則表達式之捕獲組/非捕獲組介紹使用小括號指定一個子表達式后,匹配這個子表達式的文本(也就是此分組捕獲的內容)可以在表達式或其它程序中作進一步的處理。捕獲組 語法: 字符 描述示例(pattern)匹配pattern并捕獲結果,自動設置組號。(abc)+d匹配abcd或者abcabcd(?<name>pattern)或(?'name'pattern)匹配pattern并捕獲結果,設置name為組名。num對捕獲組的反向引用。其中 num 是一個正整數(shù)。(w)(w)21匹配abbak< name >或k' name '對命名捕獲組的反向引用
2、。其中 name 是捕獲組名。(?<group>w)abck<group>匹配xabcx使用小括號指定一個子表達式后,匹配這個子表達式的文本(也就是此分組捕獲的內容)可以在表達式或其它程序中作進一步的處理。默認情況下,每個捕獲組會自動擁有一個組號,規(guī)則是:從左向右,以分組的左括號為標志,第一個出現(xiàn)的分組的組號為1,第二個為2,以此類推。 例如: (d4)-(d2-(d2) 1 1 2 3 32 以下是用程序處理捕獲組的示例,對一個Url地址進行解析,并顯示所有捕獲組。 可以看到按順序設置的捕獲組號。 Regex.Match方法 復制代碼 代碼如下:using Sular
3、Expressions; namespace Wuhong.Test class Program static void Main(string args) /目標字符串 string source = " reg-test-server:8080/download/file1.html# " /正則式 string regex = "(w+):/(/:+)(:d+)?(# :*)" Regex regUrl = new Regex(regex); /匹配正則表達式 Match m = regUrl.Match(source); Console.Writ
4、eLine(m.Success); if (m.Success) /捕獲組存放在Match.Groups集合中,索引值從1開始,索引0處為匹配的整個字符串值 /按“組號 : 捕獲內容”的格式顯示 for (int i = 0; i < m.Groups.Count; i+) Console.WriteLine(string.Format("0 : 1", i, m.Groupsi); Console.ReadLine(); 也可以自己指定子表達式的組名。這樣在表達式或程序中可以直接引用組名,當然也可以繼續(xù)使用組號。但如果正則表達式中同時存在普通捕獲組和命名捕獲組,那么
5、捕獲組的編號就要特別注意,編號的規(guī)則是先對普通捕獲組進行編號,再對命名捕獲組進行編號。 例如: (d4)-(?<date>d2-(d2) 1 1 3 2 23 下面在程序中處理命名捕獲組,顯示混合規(guī)則生成的組號,并利用捕獲組的內容對源字符串進行替換。 可以看到先對普通捕獲組進行編號,再對命名捕獲組編號。 Regex.Replace方法 復制代碼 代碼如下:using System.Text.RegularExpressions; namespace Wuhong.Test class Program static void Main(string args) /目標字符串 stri
6、ng source = " reg-test-server:8080/download/file1.html# " /正則式,對其中兩個分組命名 string regex = "(w+):/(?<server>/:+)(?<port>:d+)?(# :*)" Regex regUrl = new Regex(regex); /匹配正則表達式 Match m = regUrl.Match(source); Console.WriteLine(m.Success); if (m.Success) /捕獲組存放在Match.Groups
7、集合中,索引值從1開始,索引0處為匹配的整個字符串值 /按“組號 : 捕獲內容”的格式顯示 for (int i = 0; i < m.Groups.Count; i+) Console.WriteLine(string.Format("0 : 1", i, m.Groupsi); /替換字符串 /“$組號”引用捕獲組的內容。 /需要特別注意的是“$組號”后不能跟數(shù)字形式的字符串,如果出現(xiàn)此情況,需要使用命名捕獲組,引用格式“$組名” string replacement = string.Format("$1:/01$2", "new-
8、reg-test-server", ""); string result = regUrl.Replace(source, replacement); Console.WriteLine(result); Console.ReadLine(); 非捕獲組 語法:字符 描述示例(?:pattern)匹配pattern,但不捕獲匹配結果。'industr(?:y|ies)匹配'industry'或'industries'。(?=pattern)零寬度正向預查,不捕獲匹配結果。'Windows (?=95|98|NT|20
9、00)'匹配 "Windows2000" 中的 "Windows"不匹配 "Windows3.1" 中的 "Windows"。(?!pattern)零寬度負向預查,不捕獲匹配結果。'Windows (?!95|98|NT|2000)'匹配 "Windows3.1" 中的 "Windows"不匹配 "Windows2000" 中的 "Windows"。(?<=pattern)零寬度正向回查,不捕獲匹配結果。&
10、#39;2000 (?<=Office|Word|Excel)'匹配 " Office2000" 中的 "2000"不匹配 "Windows2000" 中的 "2000"。(?<!pattern)零寬度負向回查,不捕獲匹配結果。'2000 (?<!Office|Word|Excel)'匹配 " Windows2000" 中的 "2000"不匹配 " Office2000" 中的 "2000"。非
11、捕獲組只匹配結果,但不捕獲結果,也不會分配組號,當然也不能在表達式和程序中做進一步處理。 首先(?:pattern)與(pattern)不同之處只是在于不捕獲結果。 接下來的四個非捕獲組用于匹配pattern(或者不匹配pattern)位置之前(或之后)的內容。匹配的結果不包括pattern。 例如: (?<=<(w+)>).*(?=</1>)匹配不包含屬性的簡單HTML標簽內的內容。如:<div>hello</div>之中的hello,匹配結果不包括前綴<div>和后綴</div>。 下面是程序中非捕獲組的示例,用
12、來提取郵編。 可以看到反向回查和反向預查都沒有被捕獲。 Regex.Matches方法 復制代碼 代碼如下:using SlarExpressions; namespace Wuhong.Test class Program static void Main(string args) /目標字符串 string source = "有6組數(shù)字:010001,100,21000,310000,4100011,510002,把郵編挑出來。" /正則式 string regex = "(?<!d)(1-9d5)(?!d)" Regex regUrl = new Regex(regex); /獲取所有匹配 MatchCollection mList = regUrl.Matches(source); for (int j = 0; j < mList.Count; j+) /顯示每個分組,可以看到每個分組都只有組號為1的項,反向回查和反向預查沒有被捕獲 for (int i = 0; i < mListj.Groups.Count; i+) Console.WriteL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工行業(yè)員工績效考核
- 市場行業(yè)策劃員工作總結
- 瞄準高效輸出的年度目標計劃
- 2024年廣西壯族自治區(qū)北海市公開招聘警務輔助人員輔警筆試自考題1卷含答案
- 2024年河北省承德市公開招聘警務輔助人員輔警筆試自考題2卷含答案
- 2021年浙江省寧波市公開招聘警務輔助人員輔警筆試自考題2卷含答案
- 美麗家庭事跡材料
- 河南省鄭州市(2024年-2025年小學六年級語文)部編版隨堂測試(上學期)試卷及答案
- 廣西北海市(2024年-2025年小學六年級語文)統(tǒng)編版小升初模擬(上學期)試卷及答案
- 2025年家電配線組件項目規(guī)劃申請報告
- 學術不端行為治理研究
- 廣東省廣州市海珠區(qū)2023-2024學年九年級上學期期末物理試題(含答案)
- 企業(yè)文化、戰(zhàn)略與電力能源知識參考題庫練習卷含答案(一)
- 福建南平武夷高新技術產業(yè)控股集團有限公司招聘筆試沖刺題2024
- 2024年設備維修部管理制度(6篇)
- 精神科護理工作計劃例文
- 2024山地買賣合同模板
- 河北省承德市2023-2024學年高一上學期期末物理試卷(含答案)
- 【初中化學】二氧化碳的實驗室制取教學課件-2024-2025學年九年級化學人教版上冊
- 出租車行業(yè)服務質量提升方案
- 景區(qū)安全管理教育培訓
評論
0/150
提交評論