public static void main() { string s = "aabbc11asd"; regex reg = new regex(@"(/w)/1"); matchcollection matches = reg.matches(s); foreach(match m in matches) console.writeline(m.value); console.readline(); }
返回结果为aa bb 11
辅助匹配组
以下几种组结构,括号中的pattern都不作为匹配结果的一部分进行保存
1、正声明(?=)
涵义:括号中的模式必须出现在声明右侧,但不作为匹配的一部分
public static void main() { string s = "c#.net,vb.net,php,java,jscript.net"; regex reg = new regex(@"[/w/#]+(?=/.net)",regexoptions.compiled); matchcollection mc = reg.matches(s); foreach(match m in mc) console.writeline(m.value); console.readline(); //输出 c# vb jscript }
可以看到匹配引擎要求匹配.net,但却不把.net放到匹配结果中
2、负声明(?!)
涵义:括号中的模式必须不出现在声明右侧
下例演示如何取得一个<a>标签对中的全部内容,即使其中包含别的html tag。
public static void main() { string newscontent = @"url:<a href=""1.html""><img src=""http://www.VeVb.com/htmldata/2006-03-23/http://www.VeVb.com/htmldata/2006-03-23/1.gif"">test<span color:red;"">regex</span></a>."; regex regend = new regex(@"</s*a[^>]*>([^<]|<(?!/a))*</s*/a/s*>",regexoptions.multiline);