C# 学习笔记 -- 第六天 正规表达式

来源:互联网 发布:马斯洛安全感测试知乎 编辑:程序博客网 时间:2024/04/28 04:36

/////////////////////////////////////////////////
/
/  C# 学习笔记 -- 第六天 正规表达式
/
/  YFP 2005-12-23
/
/////////////////////////////////////////////////

正规表达式的使用场合主要是在验证用户输入,快速查找替换字符串。而不是像某些人想的用在控制显示格式上,如果要控制数据输出时的显示格式,请使用格式化字符串。这两者是不同的概念。

在微软MSDN中有很详细的技术资料 http://msdn.microsoft.com/library/CHS/cpgenref/html/cpconRegularExpressionsLanguageElements.asp

这里我只举个简单的例子,这个例子控制用户只能输入小于1的小数,而且只能输入两位小数。

例:
using System;
using System.Text.RegularExpressions;

namespace first
{
 class Class1
 {
  [STAThread]
  static void Main(string[] args)
  {
   Regex num = new Regex(@"^[0]/./d{2}");  //注意:这里的字符串就是更够实现限制的正规表达式
   string input;
   Console.WriteLine("Enter a number: ");
   input = Console.ReadLine();
   while ( num.Match(input).Success == false)
   {
    Console.WriteLine("Invalid input. Try again.");
    Console.WriteLine("Enter a number: ");
    input = Console.ReadLine();
   }
   Console.WriteLine("Validated!");
  }
 }
}

下面来解释一下这个正规表达式。首先的“@”符号是为了关闭转义处理过程,不然会看到更多的斜杠。
其次在双引号之间的第一个字符是“^”,他表示这个规则判断的起始位置从字符串起始位置开始。
“[0]”表示第一个字符必须是“[]”内字符集合中的任意一个字符,此时“[]”内只有一个“0”,那么也就是说输入的第一个字符必须是0。
紧接着是一个“/.”,接下来“/d{2}”表示必须在“.”后输入两个数字。注意这里不能只输入一个点,因为“.”表示除了换行符以外的任何字符。所以还是要加转义字符“/”。

以此类推,下面将常用的正规表达式语法给出被查。

正规表达式单字符类:

项目       描述
/d       任何数字
/D       任何非数字
/ws      任何单词字符
/W       任何非单词字符
/s       任何空白字符
/SW      任何非空白


范围字符类和集合类:

项目       描述
.         除了换行符以外的任何字符
/p{uc}    Unicode字符类型uc内的任何字符
/P{uc}     任何不属于Unicode字符类型uc的字符
[abdc]    该字符集中的任何字符
[^abdc]    这组字符集以外的任何字符


字符类量词:

项目       描述
*        0个或多个字符
+        1个或多个字符
?        0个或1个字符
{n}       正好n个字符
{n,}      至少n个字符
{n,m}     至少n个字符,但不多于m个字符

开始匹配的位置

项目       描述
^        从字符串的开始或新行的开始
$        换行符之前或该行末的字符串结尾
/G       从上次匹配结束的地方开始
/A       字符串的开始
/b       出现在字符边界(用于字母数字和非字母数字)的匹配
/B       并非出现在单词边界的字符
/z       从字符串的结尾,包括换行符
/Z       换行符之前的字符串结尾

原创粉丝点击