正则表达式-Csharp【转】

前端之家收集整理的这篇文章主要介绍了正则表达式-Csharp【转】前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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@

\W 非@H_403_7@\w@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@

例如:

@H_403_7@
Match match = Regex.Match( "@H_403_7@ age=30@H_403_7@ "@H_403_7@,@"@H_403_7@ ^(.+)=(.+)$@H_403_7@ "@H_403_7@ );@H_403_7@ if@H_403_7@ (match.Success){ Console.WriteLine(match.Groups[@H_403_7@ 0@H_403_7@] .Value); //@H_403_7@ 输出匹配的子字符串@H_403_7@Console.WriteLine(match.Groups[ 1@H_403_7@] .Value); //@H_403_7@ 获取第一个分组的内容@H_403_7@Console.WriteLine(match.Groups[ 2@H_403_7@] .Value); //@H_403_7@ 获取第二个分组的内容@H_403_7@}
@H_403_7@

----------------------------------------------------------------------------------

View Code @H_403_7@

3) Replace() 返回值为@H_403_7@string@H_403_7@

两种常用方式如下:

View Code @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@

猜你在找的正则表达式相关文章