正则表达式,使用一个字符串来匹配符合一定标准的一系列字符串。非常利于检查字符串的格式,例如,注册登录时对信息格式的检查。
C#的正则表达式在命名空间System.Text.RegularExpressions下
例1.
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Text.RegularExpressions; 7 namespace RegexTest 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 var str1 = "one, two; three four"; 14 Regex reg = new Regex(",|;| "); 15 foreach (string str in reg.Split(str1)) 16 { 17 if(str.Length != 0) 18 Console.WriteLine(str); 19 } 20 Console.ReadKey(); 21 } 22 } 23 }
第六行,使用对应的命名空间
14行,创建了Regex的实例,括号里面的内容表示:单个逗号或单个分号或单个空格
15行foreach中,reg.Split(str1)表示通过调用reg实例的split方法,将str1按照正则表达式的形式分割
得到结果
例2
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Text.RegularExpressions; 7 namespace RegexTest 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 var str1 = "text, test tux tax."; 14 Regex reg = new Regex(@"(t\S+t)(\s|,\s|;\s|.)"); 15 MatchCollection coll1 = reg.Matches(str1); 16 foreach (Match match in coll1) 17 { 18 if (match.Length != 0) 19 Console.WriteLine(match.ToString()); 20 } 21 Console.WriteLine(); 22 Regex reg2 = new Regex(@"(t\S+x)(\s|,\s|;\s|.)"); 23 MatchCollection coll2 = reg2.Matches(str1); 24 foreach (Match match in coll2) 25 { 26 if(match.Length != 0) 27 Console.WriteLine(match.ToString()); 28 } 29 Console.ReadKey(); 30 } 31 } 32 }
使用match进行匹配
14行的意义是,匹配以t开始,中间有一个或多个非空字符(\S(大写)表示任意非空字符,+表示一个或多个),后跟t,最后加上空格(\s(小写)),或逗号和空格,或分号和空格,或dot符。 同样的22行,只是改为了后跟x
这里引号前的@符号,指的是不对引号内的内容进行转义,因此不需要在每个\s \S等之前再加一个\了。
15行 MatchCollection coll1 = reg.Matches(str1);
等号右侧返回了str1里符合正则表达式的匹配集合,赋值给matchcoll类型的coll1
结果
时间: 2024-10-25 22:29:35