http://www.cnblogs.com/youquan-deng/articles/csharp-regex.html
正则表达式
正则表达式(Regex)@H_403_7@是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。@H_403_7@
一个正则表达式就是由普通的字符及特殊字符(称为元字符符)组成的文字模式。该模式秒杀在查找文章主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
正则表达式的常用元字符(全为@H_403_7@英文状态,注意可以代表的字符种类和个数)@H_403_7@:
表见原文正则表达式的常用限定符(@H_403_7@全为英文状态@H_403_7@)@H_403_7@:@H_403_7@
表见原文还有几个重要的符号:
表见原文
需要熟记一些简写:
\d = [0-9]
\D=[^0-9]
\s =空字符,如@H_403_7@\n tab space@H_403_7@等@H_403_7@
\S=非空字符@H_403_7@
\w 能组成词的字符@H_403_7@(@H_403_7@字面、数字、中文或下划线等@H_403_7@)@H_403_7@
正则表达式在.Net@H_403_7@就是用字符串表示,这个字符串格式比较特殊,无论多么特殊,在@H_403_7@C#@H_403_7@语言看来都是普通的字符串,具体什么含义由@H_403_7@Regex类内部进行语法分析。
正则表达式可以进行字符串的匹配、字符串的提取、字符串的替换。C#@H_403_7@中分别对应正则表达式的三个重要方法。@H_403_7@
1) IsMatch() 返回值为@H_403_7@bool@H_403_7@类型@H_403_7@
格式:Regex.IsMatch("字符串","正则表达式");
作用:判断字符串是否符合模板要求
例如:bool b =@H_403_7@Regex.IsMatch("bbbbg","^b.*g$");判断字符串是否以b@H_403_7@开头且以@H_403_7@g@H_403_7@结尾,中间可以有其他字符,若正确返回@H_403_7@true@H_403_7@,否则@H_403_7@else@H_403_7@。@H_403_7@
2) Match() 返回值为Match@H_403_7@类型,只能匹配一个@H_403_7@
Matches() 返回值为@H_403_7@MatchCollection@H_403_7@集合类型,匹配所有符合的@H_403_7@
格式:Match match = Regex.Match("字符串","正则表达式");
或MatchCollection @H_403_7@matches= Regex. Matches ("字符串","正则表达式");
作用:
①提取匹配的子字符串
②提取组。Groups@H_403_7@的下标由@H_403_7@1@H_403_7@开始,@H_403_7@0@H_403_7@中存放@H_403_7@match@H_403_7@的@H_403_7@value@H_403_7@。@H_403_7@
例如:
----------------------------------------------------------------------------------
3) Replace() 返回值为@H_403_7@string@H_403_7@
两种常用方式如下:
贪婪模式与终结贪婪模式
实际应用有采集器(从某个网页上采集邮箱、图片或其他信息)、敏感词过滤、UBB@H_403_7@翻译器。@H_403_7@
采集邮箱:
保存图片:
网址处理:
敏感词过滤:
UBB翻译:@H_403_7@
一些常用的正则表达式
正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新。
匹配中文字符的正则表达式: [\u4e00-\u9fa5] @H_403_7@
匹配双字节字符(@H_403_7@包括汉字在内@H_403_7@)@H_403_7@:@H_403_7@[^\x00-\xff] @H_403_7@
匹配空行的正则表达式:\n[\s| ]* @H_403_7@
匹配HTML@H_403_7@标记的正则表达式:@H_403_7@/<(.*)>.*<\/\1>|<(.*) \/>/ @H_403_7@
匹配首尾空格的正则表达式:(^\s*)|(\s*$) @H_403_7@
匹配Email@H_403_7@地址的正则表达式:@H_403_7@\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* @H_403_7@
匹配网址URL@H_403_7@的正则表达式:@H_403_7@http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? @H_403_7@
补充:
^\d+$ //匹配非负整数(正整数 @H_403_7@+ 0@H_403_7@) @H_403_7@
^[0-9]*[1-9][0-9]*$ //匹配正整数 @H_403_7@
^((-\d+)|(0+))$ //匹配非正整数(负整数 @H_403_7@+ 0@H_403_7@) @H_403_7@
^-[0-9]*[1-9][0-9]*$ //匹配负整数 @H_403_7@
^-?\d+$ //匹配整数 @H_403_7@
^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 @H_403_7@+ 0@H_403_7@) @H_403_7@
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数 @H_403_7@
^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匹配非正浮点数(负浮点数 @H_403_7@ + 0@H_403_7@) @H_403_7@
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配负浮点数 @H_403_7@
^(-?\d+)(\.\d+)?$ //匹配浮点数 @H_403_7@
^[A-Za-z]+$ //匹配由@H_403_7@26@H_403_7@个英文字母组成的字符串 @H_403_7@
^[A-Z]+$ //匹配由@H_403_7@26@H_403_7@个英文字母的大写组成的字符串 @H_403_7@
^[a-z]+$ //匹配由@H_403_7@26@H_403_7@个英文字母的小写组成的字符串 @H_403_7@
^[A-Za-z0-9]+$ //匹配由数字和@H_403_7@26@H_403_7@个英文字母组成的字符串 @H_403_7@
^\w+$ //匹配由数字、@H_403_7@26@H_403_7@个英文字母或者下划线组成的字符串 @H_403_7@
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匹配@H_403_7@email@H_403_7@地址 @H_403_7@
^[a-zA-z]+://匹配@H_403_7@(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //@H_403_7@匹配@H_403_7@url@H_403_7@