C#中的正则表达式详解

多少年来,许多的编程语言和工具都包含对正则表达式的支持,.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,而且它们也都与未来的Perl 5中的规则表达式兼容。

此外,regexp类还能够完成一些其他的功能,例如从右至左的结合模式和表达式的编辑等。

在这篇文章中,我将简要地介绍System.Text.RegularExpression中的类和方法、一些字符串匹配和替换的例子以及组结构的详细情况,最后,还会介绍一些你可能会用到的常见的表达式。

应该掌握的基础知识

规则表达式的知识可能是不少编程人员“常学常忘”的知识之一。在这篇文章中,我们将假定你已经掌握了规则表达式的用法,尤其是Perl 5中表达式的用法。.NET的regexp类是Perl 5中表达式的一个超集,因此,从理论上说它将作为一个很好的起点。我们还假设你具有了C#的语法和.NET架构的基本知识。

如果你没有规则表达式方面的知识,我建议你从Perl 5的语法着手开始学习。在规则表达式方面的权威书籍是由杰弗里·弗雷德尔编写的《掌握表达式》一书,对于希望深刻理解表达式的读者,我们强烈建议阅读这本书。

RegularExpression组合体

regexp规则类包含在System.Text.RegularExpressions.dll文件中,在对应用软件进行编译时你必须引用这个文件,例如:

csc r:System.Text.RegularExpressions.dll foo.cs

命令将创建foo.exe文件,它就引用了System.Text.RegularExpressions文件。

名字空间简介

在名字空间中仅仅包含着6个类和一个定义,它们是:

Capture: 包含一次匹配的结果;

CaptureCollection: Capture的序列;

Group: 一次组记录的结果,由Capture继承而来;

Match: 一次表达式的匹配结果,由Group继承而来;

MatchCollection: Match的一个序列;

MatchEvaluator: 执行替换操作时使用的代理;

Regex: 编译后的表达式的实例。

Regex类中还包含一些静态的方法:

Escape: 对字符串中的regex中的转义符进行转义;

IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值;

Match: 返回Match的实例;

Matches: 返回一系列的Match的方法;

Replace: 用替换字符串替换匹配的表达式;

Split: 返回一系列由表达式决定的字符串;

Unescape:不对字符串中的转义字符转义。

时间: 2024-10-03 21:54:23

C#中的正则表达式详解的相关文章

比较全面的C 、Java、JavaScript中的正则表达式详解_正则表达式

什么是正则表达式? 正则表达式(Regular Expression) 就是用某种模式去匹配一类字符串的公式.如你要在一篇文章中查找第一个字是"罗"最后一个字是"浩"的三个字的姓名,即"罗 * 浩":那么"罗 * 浩"就是公式,也称作 模式(Pattern) ,这篇文章就是 要匹配的串( 或叫文本 text) .再如,你要检查输入的一个字符串是否是 126 邮箱的格式,你得制定一个规则去查检,这种规则就是正则表达式. 从入门开

比较全面的C 、Java、JavaScript中的正则表达式详解

什么是正则表达式? 正则表达式(Regular Expression) 就是用某种模式去匹配一类字符串的公式.如你要在一篇文章中查找第一个字是"罗"最后一个字是"浩"的三个字的姓名,即"罗 * 浩":那么"罗 * 浩"就是公式,也称作 模式(Pattern) ,这篇文章就是 要匹配的串( 或叫文本 text) .再如,你要检查输入的一个字符串是否是 126 邮箱的格式,你得制定一个规则去查检,这种规则就是正则表达式. 从入门开

php中字符串和正则表达式详解_php实例

一.字符串类型的特点 1.PHP是弱类型语言,其他数据类型一般都可以直接应用于字符串函数操作. <?phpecho substr("123456",2,4);  //输出345echo substr(123456,2,4);    //输出345echo hello;                 //先查找hello常量,若没找到,将hello看做字符串使用?> 2.字符串可以作为"数组",是字符的集合. <?php$str = "w

ASP正则表达式详解

详解|正则    本文全面的详细的介绍了ASP正则表达式的规范,以及如何建立和使用的注意事项.    什么是正则表达式    如果原来没有使用过正则表达式,那么可能对这个术语和概念会不太熟悉.不过,它们并不是您想象的那么新奇.    请回想一下在硬盘上是如何查找文件的.您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件.? 字符匹配文件名中的单个字符,而 * 则匹配一个或多个字符.一个如 'data?.dat' 的模式可以找到下述文件: data1.dat data2.dat datax.d

非常重要的php正则表达式详解_php技巧

 正则表达式是php中一个非常重要的知识点,通常用来查找和替换字符串,最常用的就是验证用户输入的信息格式是否正确,如邮件格式.电话格式等等.还有比如采集器之类的软件中,正则也是必用不可!   现在开始来学习正则表达式的基本语法:1."/"是定界符,"/"定界符之间的部分就是将要在目标对象中进行匹配的模式.同时为了正则更加灵活,引入了元字符,即"+", "*",以及 "?". (1)"+"

正则表达式详解_正则表达式

正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 正则表达式可以干嘛? 1.数据有效性验证,可以对一个字符串进行测试,看该字符串是否符合某种规定. 2.替换文本,可以在文档中将指定的文字删除,或替换为其他文字. 3.根据字符串提取一个子字符串,用来在

iOS 正则表达式详解_IOS

一.系统自带正则表达式用法 除了正则可以用,还有NSScanner这个类可以达到某些相同的效果 1.创建正则表达式对象 NSString * reg = @"[0-9]+";//字符串正则表达式NSError *error = NULL;//错误对象NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:reg options:NSRegularExpressionCaseInsens

ruby 正则表达式详解及示例代码_ruby专题

在编写puppet的pp文件中,会用到很多ruby的正则表达式,常用的正则如下: 正则表达式: [codesyntax lang="ruby"] {}: 重复次数(如 {4}表示前面的会重复出现恰好4次) {m,n}: 前面元素最少出现m次,最多出现n次 []: 范围描述符(如 [a-z]表示在a-z范围内的一个字母) \w: 字符或数字,相当于[0-9A-Za-z] \W: 非字母或数字 \s: [\t\n\r\f]空字符,相当于[\t\n\r\f] \S: 非空字符 \d: [0-

Hibernate配置文件中映射元素详解

详解 本文中将讲述Hibernate的基本配置及配置文件的应用,这对于正确熟练使用Hibernate是相当关键的. 配置文件中映射元素详解 对象关系的映射是用一个XML文档来说明的.映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等.下面从一个映射的例子开始讲解映射元素,映射文件的代码如下. <?xml version="1.0"?><!--所有的XML映射文件都需要定义如下所示的DOCTYPE.Hibernate会先在它的类路径(c