《C#正则表达式整理备忘》由会员分享,可在线阅读,更多相关《C#正则表达式整理备忘(8页珍藏版)》请在金锄头文库上搜索。
1、C#正则表达式整理备忘 (1) “”符号 “”虽然并非 C#正则表达式的“成员”,但是它经常与 C#正则表达式出双入对。“”表示,跟在它后面的字符串是个“逐字字符串”,不是很好理解,举个例子,以下两个声明是等效的: string x=D:My HuangMy Doc; string y = D:My HuangMy Doc; 事实上,如果按如下声明,C#将会报错,因为“”在 C#中用于实现转义,如“n”换行: string x = D:My HuangMy Doc;(2) 基本的语法字符。 d 0-9 的数字 D d 的补集(以所以字符为全集,下同),即所有非数字的字符 w 单词字符,指大小写
2、字母、0-9 的数字、下划线 W w 的补集 s 空白字符,包括换行符n、回车符r、制表符t、垂直制表符v、换页符f S s 的补集 . 除换行符n 外的任意字符 匹配内所列出的所有字符 匹配非内所列出的字符 下面提供一些简单的示例:1. string i = n;2. string m = 3;3. Regex r = new Regex(D);4. /同 Regex r = new Regex(D);5. /r.IsMatch(i)结果:true6. /r.IsMatch(m)结果:false7. 8. string i = %;9. string m = 3;10. Regex r =
3、new Regex(a-z0-9);11. /匹配小写字母或数字字符12. /r.IsMatch(i)结果:false13. /r.IsMatch(m)结果:true(3) 定位字符“定位字符”所代表的是一个虚的字符,它代表一个位置,你也可以直观地认为“定位字符”所代表的是某个字符与字符间的那个微小间隙。 表示其后的字符必须位于字符串的开始处$ 表示其前面的字符必须位于字符串的结束处b 匹配一个单词的边界B 匹配一个非单词的边界另外,还包括:A 前面的字符必须位于字符处的开始处,z 前面的字符必须位于字符串的结束处,Z前面的字符必须位于字符串的结束处,或者位于换行符前下面提供一些简单的示例:1
4、. string i = Live for nothing,die for something;2. Regex r1 = new Regex(Live for nothing,die for something$);3. /r1.IsMatch(i) true4. Regex r2 = new Regex(Live for nothing,die for some$);5. /r2.IsMatch(i) false6. Regex r3 = new Regex(Live for nothing,die for some);7. /r3.IsMatch(i) true8. 9. string
5、i = Live for nothing,10. die for something;/多行11. Regex r1 = new Regex(Live for nothing,die for something$);12. Console.WriteLine(r1 match count: + r1.Matches(i).Count);/013. Regex r2 = new Regex(Live for nothing,die for something$, RegexOptions.Multiline);14. Console.WriteLine(r2 match count: + r2.
6、Matches(i).Count);/015. Regex r3 = new Regex(Live for nothing,rndie for something$);16. Console.WriteLine(r3 match count: + r3.Matches(i).Count);/117. Regex r4 = new Regex(Live for nothing,$);18. Console.WriteLine(r4 match count: + r4.Matches(i).Count);/019. Regex r5 = new Regex(Live for nothing,$,
7、RegexOptions.Multiline);20. Console.WriteLine(r5 match count: + r5.Matches(i).Count);/021. Regex r6 = new Regex(Live for nothing,rn$);22. Console.WriteLine(r6 match count: + r6.Matches(i).Count);/023. Regex r7 = new Regex(Live for nothing,rn$, RegexOptions.Multiline);24. Console.WriteLine(r7 match c
8、ount: + r7.Matches(i).Count);/025. Regex r8 = new Regex(Live for nothing,r$);26. Console.WriteLine(r8 match count: + r8.Matches(i).Count);/027. Regex r9 = new Regex(Live for nothing,r$, RegexOptions.Multiline);28. Console.WriteLine(r9 match count: + r9.Matches(i).Count);/129. Regex r10 = new Regex(d
9、ie for something$);30. Console.WriteLine(r10 match count: + r10.Matches(i).Count);/031. Regex r11 = new Regex(die for something$, RegexOptions.Multiline);32. Console.WriteLine(r11 match count: + r11.Matches(i).Count);/133. Regex r12 = new Regex();34. Console.WriteLine(r12 match count: + r12.Matches(
10、i).Count);/135. Regex r13 = new Regex($);36. Console.WriteLine(r13 match count: + r13.Matches(i).Count);/137. Regex r14 = new Regex(, RegexOptions.Multiline);38. Console.WriteLine(r14 match count: + r14.Matches(i).Count);/239. Regex r15 = new Regex($, RegexOptions.Multiline);40. Console.WriteLine(r1
11、5 match count: + r15.Matches(i).Count);/241. Regex r16 = new Regex(Live for nothing,r$ndie for something$, RegexOptions.Multiline);42. Console.WriteLine(r16 match count: + r16.Matches(i).Count);/143. /对于一个多行字符串,在设置了 Multiline 选项之后,和$将出现多次匹配。44. 45. string i = Live for nothing,die for something;46. s
12、tring m = Live for nothing,die for some thing;47. Regex r1 = new Regex(bthingb);48. Console.WriteLine(r1 match count: + r1.Matches(i).Count);/049. Regex r2 = new Regex(thingb);50. Console.WriteLine(r2 match count: + r2.Matches(i).Count);/251. Regex r3 = new Regex(bthingb);52. Console.WriteLine(r3 ma
13、tch count: + r3.Matches(m).Count);/153. Regex r4 = new Regex(bfor somethingb);54. Console.WriteLine(r4 match count: + r4.Matches(i).Count);/155. /b 通常用于约束一个完整的单词56. (4) 重复描述字符“重复描述字符”是体现 C#正则表达式“很好很强大”的地方之一:n 匹配前面的字符 n 次n, 匹配前面的字符 n 次或多于 n 次n,m 匹配前面的字符 n 到 m 次? 匹配前面的字符 0 或 1 次+ 匹配前面的字符 1 次或多于 1 次* 匹
14、配前面的字符 0 次或式于 0 次以下提供一些简单的示例:1. string x = 1024;2. string y = +1024;3. string z = 1,024;4. string a = 1;5. string b=-1024;6. string c = 10000;7. Regex r = new Regex(+?1-9,?d3$);8. Console.WriteLine(x match count: + r.Matches(x).Count);/19. Console.WriteLine(y match count: + r.Matches(y).Count);/110.
15、 Console.WriteLine(z match count: + r.Matches(z).Count);/111. Console.WriteLine(a match count: + r.Matches(a).Count);/012. Console.WriteLine(b match count: + r.Matches(b).Count);/013. Console.WriteLine(c match count: + r.Matches(c).Count);/014. /匹配 1000 到 9999 的整数。(5)择一匹配 C#正则表达式中的 (|) 符号似乎没有一个专门的称谓,姑且称之为“择一匹配”吧。事实上,像a-z也是一种择一匹配,