天天看点

.NET中正则表达式的语法用例

字符匹配语法:

字符语法

语法解释

语法例子

\d

匹配数字(0~9)

‘\d’匹配8,不匹配12;

\D

匹配非数字

‘\D’匹配c,不匹配3;

\w

匹配任意单字符

‘\w\w’ 匹配A3,不匹配@3;

\W

匹配非单字符

‘\W’匹配@,不匹配c;

\s

匹配空白字符

‘\d\s\d’匹配3 d,不匹配abc;

\S

匹配非空字符

‘\S\S\S’匹配A#4,不匹配3 d;

.

匹配任意字符

‘....’匹配A$ 5,不匹配换行;

[…]

匹配括号中任意字符

[b-d]匹配b、c、d, 不匹配e;

[^…]

匹配非括号字符

[^b-z]匹配a,不匹配b-z的字符;

     重复匹配语法:

重复语法

{n}

匹配n次字符

\d{3}匹配\d\d\d,不匹配\d\d或\d\d\d\d

{n,}

匹配n次和n次以上

\w{2}匹配\w\w和\w\w\w以上,不匹配\w

{n,m}

匹配n次上m次下

\s{1,3}匹配\s,\s\s,\s\s\s,不匹配\s\s\s\s

?

匹配0或1次

5?匹配5或0,不匹配非5和0

+

匹配一次或多次

\S+匹配一个以上\S,不匹配非一个以上\S

*

匹配0次以上

\W*匹配0以上\W,不匹配非N*\W

     字符定位语法:

^

定位后面模式开始位置

$

前面模式位于字符串末端

\A

前面模式开始位置

\z

前面模式结束位置

\Z

前面模式结束位置(换行前)

\b

匹配一个单词边界

\B

匹配一个非单词边界

    转义匹配语法:

转义语法

涉及字符(语法解释)

“\”+实际字符

\ . * + ? | ( ) { }^ $

例如:\\匹配字符“\”

\n

匹配换行

\r

匹配回车

\t

匹配水平制表符

\v

匹配垂直制表符

\f

匹配换页

\nnn

匹配一个8进制ASCII

\xnn

匹配一个16进制ASCII

\unnnn

匹配4个16进制的Uniode

\c+大写字母

匹配Ctrl-大写字母

例如:\cS-匹配Ctrl+S

示例:

读取文件内容和分析,文件格式如下:

string[] lines = File.ReadAllLines(Server.MapPath("type.txt"), Encoding.UTF8);

            Regex myregex = new Regex(@"'([\w\W]+)'[\w\W]+'([\w\W]+)'[\w\W]+");

            Match match;

            foreach (string line in lines)

            {

                //Response.Write(line + "<br/>");

                match = myregex.Match(line);

                if (match.Success)

                {

                    Response.Write("case \"." +match.Groups[1].Value + "\":<br/>");//匹配的第1个值

                    Response.Write("ContentType = \"" +match.Groups[2].Value + "\";<br/>break;<br/>");//匹配的第2个值

                }

            }

运行的结果: 

所以说,正则表达式是很强大的,尤其是在批量格式化的时候很方便使用!!

附:

替换html代码中的关键词,但不能是img a标签中的内容:

html=Regex.Replace(html,@"(?<!(<img[^>]*?)|<a\b[^>]*?>[^<>]*?)(设计|技能)","<a href=\"http://www.test.com\">$2</a>");

重复匹配需要的内容:

.NET中正则表达式的语法用例

更多正则表达式参考:http://blog.csdn.net/dl020840504/article/details/8880603