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

首頁 > 編程 > regex > 正文

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

2020-01-20 22:16:37
字體:
來源:轉載
供稿:網友
捕獲組
語法:

字符 

描述

示例

(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
久青草国产97香蕉在线视频| 26uuu国产精品视频| 欧美电影第一页| 欧美精品少妇videofree| 亚洲国产高清自拍| 伦理中文字幕亚洲| 激情懂色av一区av二区av| 亚洲福利视频专区| 国产精品欧美一区二区三区奶水| 日韩视频免费在线| 日韩欧美亚洲综合| 国产日本欧美一区| 国产精品久久久久久久久久久不卡| 国产在线高清精品| 91在线观看免费观看| 亚洲人成电影网| 国产精品福利观看| 国产成人a亚洲精品| 国产成人精品视频| 日韩中文字幕免费视频| 久久影视电视剧凤归四时歌| 亚洲qvod图片区电影| 亚洲国产天堂久久综合网| 91精品久久久久久久久久| 日本精品在线视频| 日本精品在线视频| 久久夜精品香蕉| 欧美人与性动交a欧美精品| 亚洲精品久久久久国产| 欧美一级成年大片在线观看| 成人激情视频在线播放| 欧美另类99xxxxx| 亚洲国产成人精品久久久国产成人一区| 97成人精品视频在线观看| 日韩免费在线播放| 亚洲激情中文字幕| 亚洲日韩欧美视频| 日日噜噜噜夜夜爽亚洲精品| 国产女同一区二区| 红桃av永久久久| 97久久精品人人澡人人爽缅北| 久久五月天色综合| 日韩精品一区二区视频| 欧美黑人性视频| 亚洲第一区在线| 亚洲免费视频网站| 成人激情视频在线| 国产视频自拍一区| 中文字幕日韩欧美| 欧美精品激情在线| 性欧美长视频免费观看不卡| 69影院欧美专区视频| 国产精品6699| 成人免费xxxxx在线观看| 啪一啪鲁一鲁2019在线视频| 欧美资源在线观看| 精品无码久久久久久国产| 久久韩国免费视频| 午夜精品一区二区三区视频免费看| 日韩二区三区在线| 国模吧一区二区三区| 伊人av综合网| 国产精品久久久久久av下载红粉| 欧美成人免费播放| 国产精品久久久久久久久免费| 亚洲女人天堂网| 久久久久久com| 亚洲欧美日韩国产成人| 亚洲国产精品va在线| 久久久久久久久国产精品| 久久精品99久久久久久久久| 少妇高潮 亚洲精品| 欧美激情精品久久久久久| 欧美另类老女人| 精品国偷自产在线视频99| 日韩高清电影免费观看完整版| 久久亚洲精品网站| 成人精品一区二区三区电影黑人| 91精品久久久久久久久久入口| 三级精品视频久久久久| 国产欧美在线视频| 日本三级韩国三级久久| 欧美性videos高清精品| 亚洲成人教育av| 亚洲天堂日韩电影| 欧美另类老肥妇| 91久久久久久久一区二区| 久久精品福利视频| 亚洲视频国产视频| 国产精品欧美一区二区| 欧美一级淫片aaaaaaa视频| 久久久久久国产| 精品欧美激情精品一区| 庆余年2免费日韩剧观看大牛| 亚洲护士老师的毛茸茸最新章节| 中文国产成人精品久久一| 日韩欧亚中文在线| 夜夜狂射影院欧美极品| 国产热re99久久6国产精品| 亚洲精品v欧美精品v日韩精品| 国产精品高潮呻吟久久av黑人| 欧美一区二粉嫩精品国产一线天| 成人黄色生活片| 国产精品国产福利国产秒拍| 色黄久久久久久| 日本亚洲精品在线观看| 国产亚洲精品久久久久久| 欧美国产日韩中文字幕在线| 啪一啪鲁一鲁2019在线视频| 91久久精品在线| 久久综合久久八八| 国内精品小视频| 狠狠色狠色综合曰曰| 亚洲精品国产综合区久久久久久久| 亚洲人a成www在线影院| 亚洲一区二区三区在线免费观看| 日本久久久久久久久久久| 成人写真视频福利网| 日韩欧美在线视频日韩欧美在线视频| 国产97在线亚洲| 亚洲国产欧美一区二区三区久久| 国产精品免费小视频| 国产精品高清在线观看| 亚洲片在线观看| 欧美一区二区三区精品电影| 亚洲人成在线观看网站高清| 亚洲护士老师的毛茸茸最新章节| 韩国国内大量揄拍精品视频| 亚洲国产精品成人va在线观看| 欧美乱大交做爰xxxⅹ性3| 一本大道香蕉久在线播放29| 高清视频欧美一级| 97高清免费视频| 国产午夜精品一区理论片飘花| 日韩高清有码在线| 美女啪啪无遮挡免费久久网站| 国产在线观看91精品一区| 久久久久久久国产精品视频| 成人观看高清在线观看免费| 欧美日韩激情视频| 欧美色视频日本版| 欧美一区视频在线| 美女扒开尿口让男人操亚洲视频网站| 91高清视频在线免费观看| 精品久久久国产精品999| 国内精品久久久久| 96pao国产成视频永久免费| 国产精品成人免费电影| 97在线视频免费播放| 午夜精品久久久久久久白皮肤| 中文字幕欧美视频在线| 精品久久久中文| 国产精品中文久久久久久久| 中文字幕在线观看日韩| 狠狠色狠色综合曰曰| 美日韩丰满少妇在线观看| 亚洲免费视频在线观看| 欧美日韩福利视频| 国产91精品高潮白浆喷水| 91福利视频在线观看| 欧美性xxxx在线播放| 亚洲精品福利视频| 亚洲最大成人免费视频| 午夜精品久久久久久久久久久久久|