BY ZKXP
前言:看的我晕头转向的,当觉得结构风格上和DataTable,DataRow那一系列的有点相象。单条记录集合这样的关系。CaptureCollection,MatchCollection,Captures,Group这些东西的关系上,主要是在理解这个Group上。有点似懂非懂。
asp.net的正则位于System.Text.RegularExpressions空间下。
其主要对象有Capture,CaptureCollection,Group,GroupCollection,Match,MatchCollection,Regex
还有个委托MatchEvaluator目前还没看。
有个霉举RegexOptions里面列举了Regex的Match方法的一些参数。如RegexOptions.IgnoreCase指定为查找不区分大小写等。
以前在asp中使用正则的时候好像是通过while循环来持续查找字符串直到找不到来实现查找所有匹配的,.net提供了集合对象可以一次查找把匹配放入集合里然后供你揉腻。
先看Regex对象:描述为 表示不可变的正则表达式。
从主要
Regex.Match方法:在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个 Match 对象返回。
Regex.Matches方法:输入字符串中搜索正则表达式的所有匹配项并返回所有成功的匹配,就像多次调用 Match 一样。
Regex.Match返回单条匹配结果可以存储在Match对象里。
Regex.Matches返回所有匹配结果存储在MatchCollection对象里。
Match类:表示单个正则表达式匹配的结果。
存储Regex.Match方法的查找单条结果。Match对象是个集合。但Match对象里还存储了所有匹配结果,存储在Match.Groups里,通过Match.NextMatch就可以返回下一条匹配结果。象DataReader.Read返回是否还有记录一样.Match.Success可以返回是否还有下一条匹配。
所以可以通过如下方法来遍历所有匹配。
while(m.Success)
{
m = m.NextMath;
}
MatchCollection类:表示通过以迭代方式将正则表达式模式应用于输入字符串所找到的成功匹配的集合。
就是放置所有匹配的集合了。主要用到就就是其索引器和Count属性了。MatchCollection[i]。
从此列看出和Match的关系:
private void t6()
{
/*综合练习*/
string txt = "123abc4abcd";
Regex r = new Regex("abc");
MatchCollection mc = r.Matches(txt);
for(int i=0;i<mc.Count;i++)
{
Match m = mc[i];
}
}
就象DataTable和DataRow。
Capture 类:示单个子表达式捕获中的结果。Capture 表示单个成功捕获中的一个子字符串。
CaptureCollection类 :表示一个捕获子字符串序列。CaptureCollection 返回由单个捕获组执行的捕获的集合。
测试了下代码好像是这样的。Match对象通过Regex.Match方法就已经存储了所有匹配结果了。