在C#中,.NET为我们提供了一个System.Text.RegularExpression命名空间,包含了一些我们常用的操作和运用RegularExpression的对象,属性和方法。其中相当重要的有Regex,Match,Group,Capture等对象。
我们可以来看看这些对象之间有什么联系和区别,并学习在实际中运用它们。
类
|
说明
|
|
表示单个子表达式捕获中的结果。Capture表示单个成功捕获中的一个子字符串。
|
|
表示一个捕获子字符串序列。CaptureCollection返回由单个捕获组执行的捕获的集合。
|
|
Group表示单个捕获组的结果。由于存在数量词,一个捕获组可以在单个匹配中捕获零个、一个或更多的字符串,因此 Group 提供 Capture 对象的集合。
|
|
表示捕获组的集合。GroupCollection返回单个匹配中的捕获组的集合。
|
|
表示单个正则表达式匹配的结果。
|
|
表示通过以迭代方式将正则表达式模式应用于输入字符串所找到的成功匹配的集合。
|
|
表示不可变的正则表达式。
|
|
提供编译器用于将正则表达式编译为独立程序集的信息。
|
首先我们接触到的就是Regex对象,表示不可变的正则表达式。另外Regex类包含若干静态方法,使您无需显式创建 Regex 对象即可使用正则表达式。使用静态方法等效于构造 Regex 对象,使用该对象一次然后将其销毁。
例如:
我们可以通过Regex的构造函数创建对象:
Regex objRegex = new Regex();
或者通过静态方法直接运用:
string strTarget= "123abc456def789g";
string strRegex = @"\d+";
Console.WriteLine((System.Text.RegularExpressions.Regex.Matches(strTarget,strRegex)).Count);
以上就是直接通过静态方法的实例。
运用RegularExpression就不可能不涉及到匹配。Match表示单个正则表达式匹配的结果。这一点不用解释,以
string strTarget= "123abc456def789g";
string strRegex = @"\d+";
Console.WriteLine((System.Text.RegularExpressions.Regex.Matches(strTarget,strRegex)).Count);
为例,一个Match可能就是123。
由于单个匹配可能涉及多个捕获组,因此 Match 具有返回 GroupCollection 的 Groups 属性。GroupCollection具有返回每个组的访问器。Match从 Group 继承,因此可以直接访问匹配的整个子字符串。即 Match 实例本身等效于 Match.Groups[0](在 Visual Basic 中为 Match.Groups(0))。Match对象是不可变的,并且没有公共构造函数。
这里衍生出一个新的对象----Group,Group表示单个捕获组的结果。在C#的RegularExpression中用圆括号括起来表示一个捕获组。看例子:
string strTarget= "123abc456def789g";
string strRegex1 = @"\d+([a-z])+";
Console.WriteLine(Regex.Match(strTarget,strRegex,RegexOptions.IgnoreCase).Groups.Count);
这里用([a-z])来捕获单个英文字符。这就是一个捕获组。所以这里Groups的Count就是2个,Groups[0]等效于Match实例本身。Groups[1]为’C’。
由于存在数量词,一个捕获组可以在单个匹配中捕获零个、一个或更多的字符串,因此 Group 提供 Capture 对象的集合。
Capture,顾名思义,就是一次捕获,还是以上面的正则表达式例子:
Console.WriteLine(Regex.Match(strTarget,strRegex1,RegexOptions.IgnoreCase).Groups[1].Captures.Count);
通过输出我们可以看见有3个Capture,如果我们都打印出来会发现分别是a,b,c而Groups[1]保留了最后一次捕获。
至此,我们可以大概了解了。这些常用对象。
至于如何运用,还是要视具体情况,正则表达式主要用以处理文本,如果机会合适还是可以节约很多工作量的,推荐大家使用。
也欢迎大家就这方面继续深入和我讨论。
分享到:
相关推荐
- `System.Text.RegularExpressions`命名空间:C#中的正则表达式操作主要基于这个命名空间下的类和方法。 - `Regex`类:这是处理正则表达式的核心类,提供了多种与正则相关的静态方法和实例方法。 - `Match`类:...
c#使用正则表达式验证身份证号码,工程完全可以运行,方便大家参考和学习
3. **C#中的正则表达式API**:使用`Regex.IsMatch()`、`Regex.Replace()`、`Regex.Split()`等方法进行匹配、替换和分割操作。 4. **表单验证事件**:理解`Control.Validating`和`Form.ValidateChildren()`事件,...
使用正则表达式来判断用户输入的IP地址格式是否正确
在 C# 中,我们可以使用 System.Text.RegularExpressions 命名空间中的 Regex 类来实现正则表达式的操作。 知识点 1:正则表达式替换字符串 在上面的代码中,我们可以看到一个名为 RegexReplace 的方法,该方法...
C#中的`System.Text.RegularExpressions`命名空间提供了以下主要类: - **Regex**:这是正则表达式的主要类,包含许多静态方法如`Match`、`Matches`、`Replace`、`Split`等,用于执行匹配、替换和拆分操作。 - **...
本项目"**C#实现正则表达式判断**"主要探讨了如何在C#中使用正则表达式进行模式匹配和验证。 首先,我们需要了解正则表达式的基础概念。正则表达式是由字符和特殊符号组成的字符串,这些字符和符号代表了一组可能的...
在C#中,正则表达式的功能是通过.NET Framework提供的`System.Text.RegularExpressions`命名空间实现的。 描述中提到的"David Veeneman写的一个C#版正则表达式验证小工具",表明这个工具是由开发者David Veeneman...
总结起来,C#中的正则表达式提供了强大且灵活的字符串匹配功能。通过正确地构建正则表达式,我们可以轻松地验证数字是否精确到两位小数。在进行实际开发时,确保对输入进行有效的验证是非常重要的,这有助于提高程序...
这里用C#实现了正则表达式相关功能,并记录了所有的正则表达式的相关符号,是一个不可多得的正则表达式生成工具,这个工具适用3种场合: 1.对于初学正则表达式的朋友,这个工具适合你 2.需要C#正则表达式示例代码的...
2. **验证方法**:在C#中,你可以使用`Regex.IsMatch()`函数来验证邮箱地址是否符合正则表达式: ```csharp string email = "example@example.com"; if (Regex.IsMatch(email, EmailRegex)) { Console....
本项目提供了一个C#编写的正则表达式生成工具的源代码,对于学习和理解C#中的正则表达式操作具有很高的价值。 源代码中的关键部分可能包括以下几个方面: 1. **Regex类**:C#中的`System.Text.RegularExpressions`...
在C#中,`System.Text.RegularExpressions`命名空间提供了`Regex`类,该类是执行正则表达式操作的核心。`Regex`类包含了许多静态方法,如`Matches`、`Match`、`Split`等,这些方法可以用来查找字符串中的模式匹配项...
2. 正则表达式对象:在C#中,使用`System.Text.RegularExpressions`命名空间下的`Regex`类来处理正则表达式。 3. 匹配操作:`Match`对象表示正则表达式与输入字符串的一个匹配。`Regex.IsMatch(input, pattern)`...
在C#中使用正则表达式首先需要引入`System.Text.RegularExpressions`命名空间。然后可以使用`Regex`类来实现正则表达式的各种功能。正则表达式的构成主要包括普通字符、元字符、模式修正符以及各种量词等。 #### ...
在C#中利用正则表达式判断用户输入是否是数字 在C#中,判断用户输入是否是数字是一个非常常见的问题。通常,我们可以使用TryParse方法来判断输入是否是数字,但是这种方法有其局限性。例如,TryParse方法无法判断...
首先,我们要理解C#中的Regex类是正则表达式的核心,它包含了一系列方法,如Match、Matches、Replace、Split等,用于执行各种正则表达式操作。例如,`Match`方法用于查找字符串中第一个与正则表达式匹配的子串,而`...