正则表达式之捕获组/非捕获组 -C# C#

正则表达式之捕获组/非捕获组 -C#

捕获组       语法: 字符  描述 示例 (pattern) 匹配pattern并捕获结果,自动设置组号。  (abc)+d 匹配abcd或者abcabcd (?<name>pattern) 或 (?'name'pattern) 匹配pattern并捕获结果,设置name为组名。 num 对捕获组的反向引用。其中 num 是一个正整数。 (w)(w)21 匹配abba k< name > 或 k' name ' 对命名捕获组的反向引用。其中 name 是捕获组名。 (?<group>w)abck<group> 匹配xabcx       使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个捕获组会自 动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。       例如: (d{4}  )-(d{2}-  (d{2}   )  ) 1        1 2          3         3 2         以下是用程序处理捕获组的示例,对一个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...
阅读全文
正则表达式-基础(C#) C#

正则表达式-基础(C#)

(1)“@”符号 “@”虽然并非C#正则表达式的“成员”,但是它经常与C#正则表达式出双入对。“@”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个声明是等效的: string x="D:\My Huang\My Doc"; string y = @"D:My HuangMy Doc"; 事实上,如果按如下声明,C#将会报错,因为“”在C#中用于实现转义,如“n”换行: string x = "D:My HuangMy Doc"; (2)基本的语法字符。 d 0-9的数字 D d的补集(以所以字符为全集,下同),即所有非数字的字符 w 单词字符,指大小写字母、0-9的数字、下划线 W w的补集 s 空白字符,包括换行符n、回车符r、制表符t、垂直制表符v、换页符f S s的补集 . 除换行符n外的任意字符 […] 匹配[]内所列出的所有字符 [^…] 匹配非[]内所列出的字符 下面提供一些简单的示例: string i = "n"; string m = "3"; Regex r = new Regex(@"D"); //同Regex r = new Regex("\D"); //r.IsMatch(i)结果:true //r.IsMatch(m)结果:false string i = "%"; string m = "3"; Regex r = new Regex("[a-z0-9]"); //匹配小写字母或数字字符 //r.IsMatch(i)结果:false //r.IsMatch(m)结果:true (3)定位字符 “定位字符”所代表的是一个虚的字符,它代表一个位置,你也可以直观地认为“定位字符”所代表的是某个字符与字符间的那个微小间隙。 ^ 表示其后的字符必须位于字符串的开始处 $ 表示其前面的字符必须位于字符串的结束处 b 匹配一个单词的边界 B 匹配一个非单词的边界 另外,还包括:A 前面的字符必须位于字符处的开始处,z 前面的字符必须位于字符串的结束处,Z 前面的字符必须位于字符串的结束处,或者位于换行符前 下面提供一些简单的示例: string i = "Live for nothing,die for something"; Regex r1...
阅读全文