C#正则表达式之择一匹配浅析

C#正则表达式之择一匹配都是什么呢?具体的操作有哪些呢?

C#正则表达式中的 (|) 符号似乎没有一个专门的称谓,姑且称之为“择一匹配”吧。事实上,像[a-z]也是一种择一匹配,只不过它只能匹配单个字符,而(|)则提供了更大的范围,(ab|xy)表示匹配ab或匹配xy。注意“|”与“()”在此是一个整体。

下面提供一些简单的C#正则表达式之择一匹配示例:

 
 
 
  1. string x = "0";  
  2.  
  3. string y = "0.23";  
  4.  
  5. string z = "100";  
  6.  
  7. string a = "100.01";  
  8.  
  9. string b = "9.9";  
  10.  
  11. string c = "99.9";  
  12.  
  13. string d = "99.";  
  14.  
  15. string e = "00.1";  
  16.  
  17. Regex r = new Regex(@"^\+?((100(.0+)*)|([1-9]?[0-9])(\.\d+)*)$");  
  18.  
  19. Console.WriteLine("x match count:" + r.Matches(x).Count);//1  
  20.  
  21. Console.WriteLine("y match count:" + r.Matches(y).Count);//1  
  22.  
  23. Console.WriteLine("z match count:" + r.Matches(z).Count);//1  
  24.  
  25. Console.WriteLine("a match count:" + r.Matches(a).Count);//0  
  26.  
  27. Console.WriteLine("b match count:" + r.Matches(b).Count);//1  
  28.  
  29. Console.WriteLine("c match count:" + r.Matches(c).Count);//1  
  30.  
  31. Console.WriteLine("d match count:" + r.Matches(d).Count);//0  
  32.  
  33. Console.WriteLine("e match count:" + r.Matches(e).Count);//0  
  34. //匹配0到100的数。最外层的括号内包含两部分“(100(.0+)*)”,  
  35.  
  36. //“([1-9]?[0-9])(\.\d+)*”,  
  37.  
  38. //这两部分是“OR”的关系,  
  39.  
  40. //即正则表达式引擎会先尝试匹配100,  
  41.  
  42. //如果失败,则尝试匹配后一个表达式(表示[0,100)范围中的数字)。  

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

【编辑推荐】

  1. C#共享内存操作类实例浅析
  2. C#正则表达式之“@”符号浅析
  3. C#正则表达式之基本的语法字符浅析
  4. C#正则表达式之定位字符浅析
  5. C#正则表达式之重复描述字符浅析
THE END