亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

正則表達式之捕獲組/非捕獲組介紹

2020-03-16 21:11:06
字體:
來源:轉載
供稿:網友
使用小括號指定一個子表達式后,匹配這個子表達式的文本(也就是此分組捕獲的內容)可以在表達式或其它程序中作進一步的處理。
 
 
捕獲組 
語法: 

字符 

描述

示例

(pattern)

匹配pattern并捕獲結果,自動設置組號。

 (abc)+d

匹配abcd或者abcabcd

(?<name>pattern)

(?'name'pattern)

匹配pattern并捕獲結果,設置name為組名。

 

/num

對捕獲組的反向引用。其中 num 是一個正整數。

(/w)(/w)/2/1

匹配abba

/k< name >

/k' name '

對命名捕獲組的反向引用。其中 name 是捕獲組名。

(?<group>/w)abc/k<group>

匹配xabcx

使用小括號指定一個子表達式后,匹配這個子表達式的文本(也就是此分組捕獲的內容)可以在表達式或其它程序中作進一步的處理。默認情況下,每個捕獲組會自動擁有一個組號,規則是:從左向右,以分組的左括號為標志,第一個出現的分組的組號為1,第二個為2,以此類推。 
例如: 
(/d{4})-(/d{2}-(/d{2})) 
1 1 2 3 32 
以下是用程序處理捕獲組的示例,對一個Url地址進行解析,并顯示所有捕獲組。 
可以看到按順序設置的捕獲組號。 
Regex.Match方法 
復制代碼代碼如下:

using System.Text.RegularExpressions; 
namespace Wuhong.Test 

class Program 

static void Main(string[] args) 

//目標字符串 
string source = "http://reg-test-server:8080/download/file1.html# "; 
//正則式 
string regex = @"(/w+):////([^/:]+)(:/d+)?([^# :]*)"; 
Regex regUrl = new Regex(regex); 
//匹配正則表達式 
Match m = regUrl.Match(source); 
Console.WriteLine(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.Groups[i])); 


Console.ReadLine(); 



正則表達式之捕獲組/非捕獲組介紹

也可以自己指定子表達式的組名。這樣在表達式或程序中可以直接引用組名,當然也可以繼續使用組號。但如果正則表達式中同時存在普通捕獲組和命名捕獲組,那么捕獲組的編號就要特別注意,編號的規則是先對普通捕獲組進行編號,再對命名捕獲組進行編號。 
例如: 
(/d{4})-(?<date>/d{2}-(/d{2})) 
1 1 3 2 23 

下面在程序中處理命名捕獲組,顯示混合規則生成的組號,并利用捕獲組的內容對源字符串進行替換。 
可以看到先對普通捕獲組進行編號,再對命名捕獲組編號。 
Regex.Replace方法 
復制代碼代碼如下:

using System.Text.RegularExpressions; 
namespace Wuhong.Test 

class Program 

static void Main(string[] args) 

//目標字符串 
string source = "http://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集合中,索引值從1開始,索引0處為匹配的整個字符串值 
//按“組號 : 捕獲內容”的格式顯示 
for (int i = 0; i < m.Groups.Count; i++) 

Console.WriteLine(string.Format("{0} : {1}", i, m.Groups[i])); 


//替換字符串 
//“$組號”引用捕獲組的內容。 
//需要特別注意的是“$組號”后不能跟數字形式的字符串,如果出現此情況,需要使用命名捕獲組,引用格式“${組名}” 
string replacement = string.Format("$1://{0}{1}$2", "new-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|2000)'

匹配 "Windows2000" 中的 "Windows"

不匹配 "Windows3.1" 中的 "Windows"。

(?!pattern)

零寬度負向預查,不捕獲匹配結果。

'Windows (?!95|98|NT|2000)'

匹配 "Windows3.1" 中的 "Windows"

不匹配 "Windows2000" 中的 "Windows"。

(?<=pattern)

零寬度正向回查,不捕獲匹配結果。

'2000 (?<=Office|Word|Excel)'

匹配 " Office2000" 中的 "2000"

不匹配 "Windows2000" 中的 "2000"。

(?<!pattern)

零寬度負向回查,不捕獲匹配結果。

'2000 (?<!Office|Word|Excel)'

匹配 " Windows2000" 中的 "2000"

不匹配 " Office2000" 中的 "2000"。


非捕獲組只匹配結果,但不捕獲結果,也不會分配組號,當然也不能在表達式和程序中做進一步處理。 
首先(?:pattern)與(pattern)不同之處只是在于不捕獲結果。 
接下來的四個非捕獲組用于匹配pattern(或者不匹配pattern)位置之前(或之后)的內容。匹配的結果不包括pattern。 
例如: 
(?<=<(/w+)>).*(?=<///1>)匹配不包含屬性的簡單HTML標簽內的內容。如:<div>hello</div>之中的hello,匹配結果不包括前綴<div>和后綴</div>。 
下面是程序中非捕獲組的示例,用來提取郵編。 
可以看到反向回查和反向預查都沒有被捕獲。 
Regex.Matches方法 
復制代碼代碼如下:

using System.Text.RegularExpressions; 
namespace Wuhong.Test 

class Program 

static void Main(string[] args) 

//目標字符串 
string source = "有6組數字:010001,100,21000,310000,4100011,510002,把郵編挑出來。";
//正則式 
string regex = @"(?<!/d)([1-9]/d{5})(?!/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 < mList[j].Groups.Count; i++) 

Console.WriteLine(string.Format("{0} : {1} : {2}", j, i, mList[j].Groups[i])); 


Console.ReadLine(); 



正則表達式之捕獲組/非捕獲組介紹
注釋 
語法: 

字符

描述

示例

(?#comment)

comment是注釋,不對正則表達式的處理產生任何影響

2[0-4]/d(?#200-249)|25[0-5](?#250-255)|1?/d/d?(?#0-199)

匹配0-255的整數

這個不解釋了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久久新郎| 性夜试看影院91社区| 成人国产精品色哟哟| 精品电影在线观看| 亚洲老头同性xxxxx| 日本欧美精品在线| 久久久免费高清电视剧观看| 亚洲国产一区二区三区在线观看| 欧美国产日韩中文字幕在线| 亚洲精品国产综合久久| 亚洲成人av资源网| 91po在线观看91精品国产性色| 国产精品黄页免费高清在线观看| 欧美最猛性xxxxx亚洲精品| 亚洲精品免费一区二区三区| 国产盗摄xxxx视频xxx69| 国产成人精品一区二区三区| 中文字幕国产亚洲2019| 亚洲视频国产视频| 激情成人在线视频| 国产精品网站大全| 久久久在线免费观看| 亚洲欧美一区二区激情| 欧美电影在线观看网站| 91精品国产99久久久久久| 狠狠躁夜夜躁人人爽天天天天97| 亚洲无限av看| 成人女保姆的销魂服务| 色婷婷av一区二区三区久久| 国产欧美va欧美va香蕉在线| 国产亚洲欧美日韩精品| 亚洲成av人影院在线观看| 日韩www在线| 91免费精品国偷自产在线| 国产美女搞久久| 一区二区三区日韩在线| 亚洲一品av免费观看| 国产欧美精品一区二区三区介绍| 91sao在线观看国产| 亚洲激情小视频| 国产成人在线一区二区| 美女福利精品视频| 亚洲自拍中文字幕| 成人www视频在线观看| 岛国av一区二区| 热门国产精品亚洲第一区在线| 92看片淫黄大片看国产片| 91久久中文字幕| 亚洲色图综合久久| 久久久久久久一| 国产91热爆ts人妖在线| 欧美人与物videos| 国产精品视频一区国模私拍| 好吊成人免视频| 青青草成人在线| 久久久久国产精品免费网站| 欧美日韩国产一中文字不卡| 国产欧洲精品视频| 91国产美女在线观看| 亚洲毛片在线免费观看| 国产mv免费观看入口亚洲| 欧美黄色片在线观看| 日韩成人av在线播放| 亚洲va久久久噜噜噜久久天堂| 国产一区二区三区丝袜| 成人黄色激情网| 亚洲精品99久久久久中文字幕| 精品欧美激情精品一区| 69久久夜色精品国产69| 成人97在线观看视频| 国产精品精品一区二区三区午夜版| 成人乱人伦精品视频在线观看| 高清亚洲成在人网站天堂| 欧美激情在线一区| 欧美风情在线观看| 国内精品久久久久影院 日本资源| 亚洲国产精品推荐| 成人中文字幕+乱码+中文字幕| 国产精品久久精品| 久久6免费高清热精品| 久久亚洲精品中文字幕冲田杏梨| 亚洲欧美制服另类日韩| 成人在线一区二区| 国产精品草莓在线免费观看| 国产成人在线播放| 欧美日韩国产成人| 久久久久久久久久久91| 国产精品美女免费视频| 亚洲成人激情在线观看| 欧美成人国产va精品日本一级| 久久91亚洲精品中文字幕奶水| 亚洲国产91精品在线观看| 亚洲国产精品久久久久秋霞蜜臀| 69**夜色精品国产69乱| 在线激情影院一区| 尤物yw午夜国产精品视频| 亚洲午夜久久久影院| 久久久久999| 亚洲九九九在线观看| 国产成人福利夜色影视| 欧美性jizz18性欧美| www.亚洲男人天堂| 日韩中文娱乐网| 亚洲成人动漫在线播放| 国产精品99久久久久久www| 欧美老肥婆性猛交视频| 欧美极品第一页| 亚洲最大的免费| 欧美亚洲视频一区二区| 亚洲精品在线视频| 91极品视频在线| 国产欧洲精品视频| 欧美日韩亚洲高清| 亚洲激情第一页| 亚洲bt欧美bt日本bt| 日韩在线视频播放| 久久久av免费| 国产成人久久久| 欧美日韩国产色视频| 欧美日韩在线观看视频| www.久久久久久.com| 久久亚洲精品国产亚洲老地址| 国产激情综合五月久久| 亚洲成成品网站| 成人在线免费观看视视频| 亚洲国产一区二区三区四区| 色综合91久久精品中文字幕| 亚洲最大激情中文字幕| 欧美黄色www| 中文国产亚洲喷潮| 欧美日产国产成人免费图片| 亚洲色图日韩av| 亚洲一区二区三区在线免费观看| 亚洲乱码一区av黑人高潮| 538国产精品一区二区免费视频| 精品亚洲一区二区三区在线观看| 午夜精品三级视频福利| 2021久久精品国产99国产精品| 欧美性生交xxxxxdddd| 亚洲天堂网站在线观看视频| 国产成人综合一区二区三区| 日韩欧美成人区| 黑人巨大精品欧美一区二区一视频| 夜夜狂射影院欧美极品| 日本高清视频一区| 国产视频综合在线| 国产精品电影网站| 丝袜美腿亚洲一区二区| 欧美激情国产日韩精品一区18| 日本久久中文字幕| 精品人伦一区二区三区蜜桃免费| 久久久免费高清电视剧观看| 国产主播精品在线| 国产精品久久久久久久久久小说| 亚洲成色www8888| 亚洲免费一级电影| 国产精品高潮呻吟视频| 亚洲大胆人体视频| 久久中文字幕在线| 精品香蕉一区二区三区| 日韩av综合中文字幕| 精品调教chinesegay| 97精品一区二区视频在线观看| 国产婷婷色综合av蜜臀av|