2008年5月16日星期五
C# Regex 类
Regex 类表示只读正则表达式
Regex 类包含各种静态方法,允许在不显式实例化其他类的对象的情况下使用其他正则表达式类。以下代码示例创建了 Regex 类的实例并在初始化对象时定义一个简单的正则表达式。请注意,使用了附加的反斜杠作为转义字符,它将 \s 匹配字符类中的反斜杠指定为原义字符。
| Regex r; // 声明一个 Regex类的变量 r = new Regex("\\s2000"); // 定义表达式 |
3.2 Match 类表示正则表达式匹配操作的结果
以下示例使用 Regex 类的 Match 方法返回 Match 类型的对象,以便找到输入字符串中第一个匹配。此示例使用 Match 类的 Match.Success 属性来指示是否已找到匹配。
| Regex r = new Regex("abc"); // 定义一个Regex对象实例 Match m = r.Match("123abc456"); // 在字符串中匹配 if (m.Success) { Console.WriteLine("Found match at position " + m.Index); //输入匹配字符的位置 } |
3.3 MatchCollection 类表示非重叠匹配的序列
该集合为只读的,并且没有公共构造函数。MatchCollection 的实例是由 Regex.Matches 属性返回的。使用 Regex 类的 Matches 方法,通过在输入字符串中找到的所有匹配填充 MatchCollection。下面代码示例演示了如何将集合复制到一个字符串数组(保留每一匹配)和一个整数数组(指示每一匹配的位置)中。
| MatchCollection mc; String[] results = new String[20]; int[] matchposition = new int[20]; Regex r = new Regex("abc"); //定义一个Regex对象实例 mc = r.Matches("123abc4abcd"); for (int i = 0; i < mc.Count; i++) //在输入字符串中找到所有匹配 { results[i] = mc[i].Value; //将匹配的字符串添在字符串数组中 matchposition[i] = mc[i].Index; //记录匹配字符的位置 } |
3.4 GroupCollection 类表示捕获的组的集合
该集合为只读的,并且没有公共构造函数。GroupCollection 的实例在 Match.Groups 属性返回的集合中返回。下面的控制台应用程序查找并输出由正则表达式捕获的组的数目。
| using System; using System.Text.RegularExpressions; public class RegexTest { public static void RunTest() { Regex r = new Regex("(a(b))c"); //定义组 Match m = r.Match("abdabc"); Console.WriteLine("Number of groups found = " + m.Groups.Count); } public static void Main() { RunTest(); } } |
该示例产生下面的输出:
| Number of groups found = 3 |
3.5 CaptureCollection 类表示捕获的子字符串的序列
由于限定符,捕获组可以在单个匹配中捕获多个字符串。Captures属性(CaptureCollection 类的对象)是作为 Match 和 group 类的成员提供的,以便于对捕获的子字符串的集合的访问。例如,如果使用正则表达式 ((a(b))c)+(其中 + 限定符指定一个或多个匹配)从字符串"abcabcabc"中捕获匹配,则子字符串的每一匹配的 Group 的 CaptureCollection 将包含三个成员。
下面的程序使用正则表达式 (Abc)+来查找字符串"XYZAbcAbcAbcXYZAbcAb"中的一个或多个匹配,阐释了使用 Captures 属性来返回多组捕获的子字符串。
相关文章 [查看与 C# Regex 类 相关的全部文章]- c# WebClient
- C#实现远程线程插入
- c# 静态方法 动态方法 区别
- C#构造函数
- Visual C# csharp中的多线程编程
- 构造函数在C#中的作用
- c#析构函数
- C#中简单实现多线程
- c#中try和finally
- C# 视频教程
- C#实例程序分析
- c#如何入门,基础最重要
- namespace c#
- C# Hello World
- C#和C++的语法和功能区别
0 回复,0 引用: C# Regex 类
添加回复