首先说几个重要的正则表达式类:
Regex
Regex 类表示不可变(只读)的正则表达式。它还包含各种静态方法,允许在不显式创建其他类的实例的情况下使用其他正则表达式类。
下面的代码示例创建了 Regex 类的实例并在初始化对象时定义一个简单的正则表达式。请注意,使用了附加的反斜杠作为转义字符,它将 \. 匹配字符类中的反斜杠指定为原义字符。
示例1:Regex r=new Regex("^.+\w@.+\w\.\w+$"); //^.+\w@.+\w\.\w+$ 匹配E_Mail地址
Regex 类的常用方法:
Regex.Match
在指定的输入字符串中搜索 Regex 构造函数中指定的正则表达式的第一个匹配项。
Regex.Matches
在指定的输入字符串中搜索指定的正则表达式的所有匹配项。
Match
Match 类表示单个正则表达式匹配操作的结果。
Match 类的实例由 Regex.Match 方法返回,并表示字符串中的第一个模式匹配项。 后续匹配项由 Match.NextMatch 方法返回的 Match 对象表示。 此外,由零个、一个或多个 Match 对象组成的 MatchCollection 对象由 Regex.Matches 方法返回。
MatchCollection
MatchCollection 类表示成功的非重叠匹配项的序列。该集合为不可变(只读)的,并且没有公共构造函数。MatchCollection 的实例是由 Regex.Matches 方法返回的。
如果 Regex.Matches 方法无法与输入字符串中的正则表达式模式匹配,它将返回一个空的 MatchCollection 对象。 然后,可以使用 C# 中的 foreach 构造或 Visual Basic 中的 For Each 构造来循环访问集合。
以下代码从指定文本中提取指定内容(提取百家姓练习题):
1 string files = File.ReadAllText(@"F:\bjx.txt", Encoding.Default); 2 3 4 5 string reg = @"〔\w{1}〕"; 6 MatchCollection mat = Regex.Matches(files, reg);//通过正则表达式提取 7 8 9 10 List<string> aa = new List<string>(); //泛型运用 11 12 //foreach 遍历 13 foreach (Match m in mat) //Match类表示单个正则表达式匹配操作的结果 14 { 15 16 17 aa.Add(m.Value); //把查找的结果保存到泛型变量中 18 } 19 20 21 for (int i = 0; i < aa.Count; i++) 22 { 23 Console.WriteLine(aa[i]); //输出到屏幕 24 } 25 26 Console.ReadKey();
补充一点知识,只匹配汉字:
[\u2E80-\u9FFF]+
匹配所有东亚区的语言
[\u4E00-\u9FFF]+
匹配简体和繁体
[\u4E00-\u9FA5]+
匹配简体
例:[\u2E80-\u9FFF|,] 包含标点“,”的汉字段。
已测试。
补充于2016-10-24
利用正则表达式验证输入
要求格式:922_127
string reg = @"^\d+_\d+$";
// string reg = @"^\d{1,}_\d{1,}$"; //等价
bool isMat= System.Text.RegularExpressions.Regex.IsMatch(intendCar, reg);