C#正则表达式之组与非捕获组浅析 2009-08-20 13:44 chenglidexiaoxue CSDN博客 字号:T | T 一键收藏,随时查看,分享好友! C#正则表达式之组与非捕获组是什么

C#正则表达式之组与非捕获组浅析

2009-08-20 13:44 chenglidexiaoxue CSDN博客 字号: T |  T
一键收藏,随时查看,分享好友!

C#正则表达式之组与非捕获组是什么呢?C#正则表达式之组与非捕获组是如何使用的呢?C#正则表达式之组与非捕获组代表什么意思呢?那么本文就向你介绍具体的内容。

AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

C#正则表达式之组与非捕获组是什么呢?具体的使用是如何的呢?让我们来看看具体的实例操作:

以下提供一些简单的C#正则表达式之组与非捕获组示例:

   
   
  1. string x = "Live for nothing,die for something";  
  2.  
  3. string y = "Live for nothing,die for somebody";  
  4.  
  5. Regex r = new Regex(@"^Live ([a-z]{3}) no([a-z]{5}),die \1 some\2$");  
  6.  
  7. Console.WriteLine("x match count:" + r.Matches(x).Count);//1  
  8.  
  9. Console.WriteLine("y match count:" + r.Matches(y).Count);//0  
  10.  
  11. //正则表达式引擎会记忆“()”中匹配到的内容,作为一个“组”,  
  12. //并且可以通过索引的方式进行引用。表达式中的“\1”,  
  13. //用于反向引用表达式中出现的第一个组,即粗体标识的第一个括号内容,“\2”则依此类推。  
  14.  
  15. string x = "Live for nothing,die for something";  
  16. Regex r = new Regex(@"^Live for no([a-z]{5}),die for some\1$");  
  17. if (r.IsMatch(x))  
  18. {  
  19. Console.WriteLine("group1 value:" + r.Match(x).Groups[1].Value);//输出:thing  
  20. }  
  21. //获取组中的内容。注意,此处是Groups[1],  
  22. //因为Groups[0]是整个匹配的字符串,即整个变量x的内容。  
  23.  
  24. string x = "Live for nothing,die for something";  
  25. Regex r = new Regex(@"^Live for no(?﹤g1﹥[a-z]{5}),die for some\1$");  
  26. if (r.IsMatch(x))  
  27. {  
  28. Console.WriteLine("group1 value:" + r.Match(x).Groups["g1"].Value);  
  29. //输出:thing  
  30. }  
  31. //可根据组名进行索引。使用以下格式为标识一个组的名称(?﹤groupname﹥…)。  
  32.  
  33. string x = "Live for nothing nothing";  
  34. Regex r = new Regex(@"([a-z]+) \1");  
  35. if (r.IsMatch(x))  
  36. {  
  37. x = r.Replace(x, "$1");  
  38. Console.WriteLine("var x:" + x);//输出:Live for nothing  
  39. }  
  40. //删除原字符串中重复出现的“nothing”。在表达式之外,  
  41. //使用“$1”来引用第一个组,下面则是通过组名来引用:  
  42. string x = "Live for nothing nothing";  
  43. Regex r = new Regex(@"(?﹤g1﹥[a-z]+) \1");  
  44. if (r.IsMatch(x))  
  45. {  
  46. x = r.Replace(x, "${g1}");  
  47. Console.WriteLine("var x:" + x);//输出:Live for nothing  
  48. }  
  49.  
  50. string x = "Live for nothing";  
  51. Regex r = new Regex(@"^Live for no(?:[a-z]{5})$");  
  52. if (r.IsMatch(x))  
  53. {  
  54. Console.WriteLine("group1 value:" + r.Match(x).Groups[1].Value);//输出:(空)  
  55. }  
  56. //在组前加上“?:”表示这是个“非捕获组”,即引擎将不保存该组的内容。  

C#正则表达式之组与非捕获组使用的基本内容就向你介绍到这里,希望对你了解和学习C#正则表达式有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值