友情链接:.NET项目开发者博客

正则表达式(一)

正则表达式是对字符串进行操作的。

正则表达式元字符:
.表示除\n(换行)之外的任意的当字符
[]字符组。任意的单个字符,中括号中的任意一个字符
()的含义:改变优先级。提取分组
如果中括号中加—没有办法区分,。最好前面加上一个反义字符
限定符:{n}表示前面的表达式必须出现n次
{n ,}表示前面的表达式最后最少出现n次,最多不限
{n,m}至少出现n次,最多出现m次
*表示出现0次或多次
+表示出现1次或多次
?表示0次或1次。?的另外一个意思是:终止贪婪模式。    
^与$
^表示一个字符串的开始。字符串必须以hiello开头
$表示字符串的结束
A$字符串的结束。必须以A结束
A[^0-9]b指的是a到b之间除了0到9的所有字符
^有两个意思:^abc匹配一个正则表达式的开始
另外一个就是上面表示!非的意思,加在中括号内。

简写的表达式:
A\db  :表示A与b之间需要时0到9的数字,\d是【0-9】的缩写\d也匹配全角的字符
\D表示除了0-9之外的所有的字符  
\s表示所有空白符()
\S表示非空白字符
\w[a-za-zA-Z]  \w也可以匹配汉字
\b表示的是单词的边界


需要注意的地方是:
由于.net默认采用unicode的匹配方式,所以\d也匹配全角的方式
RegexOprons.ECMAScript表示按照ASCII的方式来匹配。
^z|food$由于|的优先级别比较低,所以比较的是以z开头或以food结尾的字符串。
一般字符串提取时不需要加^s,因为要在字符处中找出一部分和该正则表达式匹配
\b属于断言的一种,只判断是否匹配,\b是单词的边界,要求必须为单词。


正则表达式相关方法:
sMatch表示只要整个字符串中有任何一部分可以匹配,该正则表达式返回
Bool b=Regex.IsMatch(postcod,"^[0-9]{6}$")
Match对象就是找到的一个匹配对象。Match方法只会找到第一个匹配的字符串,并提取。
Match match=Regex.Math(msd,regex)
如果想匹配多个,则用matches
虽然可以对matches进行遍历,返回的东西是一个集合。但是最好用if(item.success)这样会保险很多。
Matchcollection html=File.ReadAllTexr("");
MatchCollection matches=Regex.Miathes(html,匹配的串)

Matches.count返回匹配的个数
()将匹配的字符串进行分组:
正则表达式的每个()具有两重含义:1.改变优先级2.提取组
item.Groups[0].Value
item.Value等同于itme.Group[0]
从左往右数(是第几次出现,则分在第几组中
提取组:在正则表达式中添加()来分组。2.

posted @ 2013-03-17 01:48  千年老妖  Views(320)  Comments(0Edit  收藏  举报
友情链接:.NET项目开发者博客