正则表达式是一门灵活性非常强的语言,匹配同样的字符串可能在不同的开发人员那里会得到不同的结果,在平常的时候也是用的时候看看相关资料,不用的时候就丢在脑后了,尽管在处理大部分情况下都能迅速处理,但是处理一些复杂的情况效率仍是不高,借着前阵子做过的一个项目涉及到正则表达式的机会,将有关资料阅读了一遍并结合了自己的体会,整理了几篇利用C#进行正则表达式编程的文章,一来加深自己的印象和理解,二来供博客上的读者学习借鉴。
在.NET中提供了对正则表达式的支持,并且提供了相关的类,分别有:Regex、Match、Group、Capture、RegexOptions、MatchCollection、GroupCollection、CaptureCollection。它们之间的关联如下:
对它们描述如下:
Regex:正则表达式类,代表了一个不可变的正则表达式。
Match:代表了Regex类的实例的一次匹配结果,可以通过Regex的Match()实例方法返回一个Match的实例。
MatchCollection:代表了Regex类的实例的所有匹配结果,可以通过Regex的Matches()实例方法返回一个MatchCollection的实例。
Group:表示单个捕获组的结果。由于一次匹配可能包含0个、1个或多个分组,所以Match的实例中返回的是捕获组集合的结果,即GroupCollection。
GroupCollection:表示单个匹配中的多个捕获组的集合,可以通过Match的Groups实例属性返回GroupCollection的实例。
Capture:表示单个捕获中的一个子字符串。同Group一样,由于一个捕获中可能包含0个、1个或多个子字符串,所以Group的实例中返回的是子字符串集合的结果,即CaptureCollection。
CaptureCollection:默认表示按照从里到外、从左到右的顺序由捕获组匹配到的所有子字符串集合,可以通过Group或者Match的Captures实例属性返回CaptureCollection的实例。注意,可以使用RegexOptions.RightToLeft来改变这种匹配顺序。
RegexOptions:提供用于设置正则表达式选项的枚举值。 像上面提到的RightToLeft就是它的一个枚举值之一,除此之外还有None、IgnoreCase、Multiline、ExplicitCapture、Compiled、Singleline、IgnorePatternWhitespace、RightToLeft、ECMAScript及CultureInvariant。RegexOptions枚举值可以相加,比如我们想匹配不区分大小写的字符串“abc”并且还想提高一下执行速度,那么可以写如下代码:
RegexOptions options=RegexOptions.IgnoreCase|RegexOptions.Compiled;
Regex regex=new Regex("abc",options);
Regex、Match、Group及Capture的关系及成员
从上图可以看出Regex类提供了许多静态方法,很多方法还提供了多种重载方式(在图中对存在多种参数重载的方法都以“...”表示),除此之外我们还会发现Capture、Group及Match之间存在继承关系(说实在话刚开始用的时候我发现它们之间存在着很多相同的字段,这让我当时迷惑不已,希望大家看到这个图后不要再像我当初那样迷惑了)。
在使用C#中的正则表达式进行文本处理之前先花点时间了解一下.NET中有关正则表达式的类和它们之间的关系是有必要的,这篇就算是预热篇了,在开始学习正则表达式之前做做热身运动。虽然在C#中有关正则表达式的类不多,但是对于初学者来说还是容易引起混淆,从而出现不知道该用哪些类的哪些方法或者属性的情况,这篇算是做个初步介绍吧。下一篇就先讲述Regex类,利用Regex可以用来替换、分割和处理字符串。
周公
2010年2月22日
本文出自 “周公的专栏” 博客,请务必保留此出处http://zhoufoxcn.blog.51cto.com/792419/280320
本文出自 51CTO.COM技术博客
分享到:
相关推荐
C#中的正则表达式功能主要由`System.Text.RegularExpressions`命名空间提供,该命名空间包含了一系列类和方法,用于创建、操作正则表达式。其中最重要的类是`Regex`,它提供了用于匹配字符串的方法。 ### 示例代码...
通过以上对C#正则表达式集合的详细解释,我们可以看到正则表达式在实际开发中的强大功能,无论是数据验证还是文本处理等方面都能发挥重要作用。开发者可以根据具体需求灵活地应用这些正则表达式,提高程序的健壮性和...
### C#正则表达式提取中文 在C#中,`System.Text.RegularExpressions`命名空间提供了`Regex`类,该类是执行正则表达式操作的核心。`Regex`类包含了许多静态方法,如`Matches`、`Match`、`Split`等,这些方法可以...
在C#中,正则表达式是通过System.Text.RegularExpressions命名空间中的Regex类来实现的。以下是如何在C#中使用正则表达式的一些基本步骤和代码示例。 正则表达式是C#中处理字符串的强大工具。通过Regex类,可以轻松...
在 C# 中,正则表达式类位于 System.Text.RegularExpressions 命名空间中,它们具有用来检查给出的字符串是否符合规则的属性和方法。 基本语法字符 在正则表达式中,有一些基本语法字符,它们具有特殊的含义: * ...
- `System.Text.RegularExpressions`命名空间:C#中的正则表达式操作主要基于这个命名空间下的类和方法。 - `Regex`类:这是处理正则表达式的核心类,提供了多种与正则相关的静态方法和实例方法。 - `Match`类:...
在C#中,我们可以使用System.Text.RegularExpressions命名空间中的Regex类来使用正则表达式。 在给定的代码中,我们可以看到作者使用了四个正则表达式对象:objNotNumberPattern、objTwoDotPattern、...
在C#中,`System.Text.RegularExpressions`命名空间提供了`Regex`类来处理正则表达式。 1. **创建正则表达式对象** 要使用正则表达式,首先要创建一个`Regex`对象。这通常通过传递一个字符串作为模式到`Regex`构造...
在.NET框架中,正则表达式相关的功能主要由几个核心类实现: 1. **Regex 类**:表示只读正则表达式,提供了一系列静态方法,允许开发者在不显式实例化其他类的情况下使用正则表达式。例如,创建一个简单的正则...
在C#中,正则表达式的相关功能主要由`System.Text.RegularExpressions`命名空间下的类库支持。为了更好地理解和运用C#中的正则表达式,我们需要从以下几个方面进行探讨: ##### 1. 字符串声明 - **逐字字符串**:...
正则表达式在C#中主要通过`System.Text.RegularExpressions`命名空间下的`Regex`类来实现。下面将详细讲解C#中正则表达式的使用方法和常见应用场景。 1. **正则表达式基础** - **模式匹配**:正则表达式可以用来...
在C#中,正则表达式是通过`System.Text.RegularExpressions`命名空间中的`Regex`类来实现的。例如,我们可以使用`Regex.IsMatch()`来检查一个字符串是否符合特定的模式,`Regex.Match()`和`Regex.Matches()`用于查找...
在C#编程中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作。本示例主要讲解如何使用C#的正则表达式来验证电话号码的格式,确保输入的数据符合预设的规则。电话号码的格式可能因国家和地区而异,...
在C#编程语言中,正则表达式的应用十分广泛,特别是在数据验证方面,它能够帮助开发者高效地检查字符串是否符合预设的模式。本文将详细探讨如何使用C#中的正则表达式来验证电子邮件(Email)、IP地址以及URL网址的...
在C#编程中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和验证各种复杂的字符串模式。它们是通过预定义的模式来识别和操作字符串的强大工具,广泛应用于数据验证、文本分析和数据提取等多个场景。...
.NET 框架正则表达式并入了其他正则表达式实现的最常见功能,被设计为与 Perl 5 正则表达式兼容,.NET 框架正则表达式还包括一些在其他实现中尚未提供的功能,.NET 框架正则表达式类是基类库的一部分,并且可以和...
在C#编程语言中,正则表达式是通过System.Text.RegularExpressions命名空间中的Regex类来实现的。本篇文章将深入探讨C#中的正则表达式验证类,以及如何在实际开发中运用它们。 首先,`Regex`类提供了许多静态方法,...
c#使用正则表达式验证身份证号码,工程完全可以运行,方便大家参考和学习
在.NET框架中,C#通过`System.Text.RegularExpressions`命名空间提供了丰富的类和方法来支持正则表达式的使用。本文旨在深入解析C#中正则表达式的相关知识,包括基本概念、类和方法的使用、实际案例分析等内容。 ##...
在C#中,正则表达式的功能主要通过`System.Text.RegularExpressions`命名空间下的`Regex`类实现。 ##### 1. 基本语法 - **普通字符**:如`a-z`、`A-Z`、`0-9`等。 - **元字符**:具有特殊含义的字符,用于构建复杂...