C#正则表达式整理备忘(二)
(4)重复描述字符 “重复描述字符”是体现C#正则表达式“很好很强大”的地方之一: {n} 匹配前面的字符n次 {n,} 匹配前面的字符n次或多于n次 {n,m} 匹配前面的字符n到m次 ? 匹配前面的字符0或1次 + 匹配前面的字符1次或多于1次 * 匹配前面的字符0次或式于0次 以下提供一些简单的示例: string x = "1024"; string y = "+1024"; string z = "1,024"; string a = "1"; string b="-1024"; string c = "10000"; Regex r = new Regex(@"^/+?[1-9],?/d{3}$"); Console.WriteLine("x match count:" + r.Matches(x).Count);//1 Console.WriteLine("y match count:" + r.Matches(y).Count);//1 Console.WriteLine("z match count:" + r.Matches(z).Count);//1 Console.WriteLine("a match count:" + r.Matches(a).Count);//0 Console.WriteLine("b match count:" + r.Matches(b).Count);//0 Console.WriteLine("c match count:" + r.Matches(c).Count);//0 //匹配1000到9999的整数。 (5)择一匹配 string x = "0"; string y = "0.23"; string z = "100"; string a = "100.01"; string b = "9.9"; string c = "99.9"; string d = "99."; string e = "00.1"; Regex r = new Regex(@"^/+?((100(.0+)*)|([1-9]?[0-9])(/./d+)*)$"); Console.WriteLine("x match count:" + r.Matches(x).Count);//1 Console.WriteLine("y match count:" + r.Matches(y).Count);//1 Console.WriteLine("z match count:" + r.Matches(z).Count);//1 Console.WriteLine("a match count:" + r.Matches(a).Count);//0 Console.WriteLine("b match count:" + r.Matches(b).Count);//1 Console.WriteLine("c match count:" + r.Matches(c).Count);//1 Console.WriteLine("d match count:" + r.Matches(d).Count);//0 Console.WriteLine("e match count:" + r.Matches(e).Count);//0 //匹配0到100的数。最外层的括号内包含两部分“(100(.0+)*)”,“([1-9]?[0-9])(/./d+)*”,这两部分是“OR”的关系,即正则表达式引擎会先尝试匹配100,如果失败,则尝试匹配后一个表达式(表示[0,100)范围中的数字)。 (6)特殊字符的匹配 string x = "//"; Regex r1 = new Regex("^$"); Console.WriteLine("r1 match count:" + r1.Matches(x).Count);//1 Regex r2 = new Regex(@"^//$"); Console.WriteLine("r2 match count:" + r2.Matches(x).Count);//1 Regex r3 = new Regex("^//$"); Console.WriteLine("r3 match count:" + r3.Matches(x).Count);//0 //匹配“/” string x = "/""; Regex r1 = new Regex("^/"$"); Console.WriteLine("r1 match count:" + r1.Matches(x).Count);//1 Regex r2 = new Regex(@"^""$"); Console.WriteLine("r2 match count:" + r2.Matches(x).Count);//1 //匹配双引号 |