转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
[Regex]ASP.NET 中的正则表达式-微软速成课程         ★★★★
模式 输入(匹配)

foo

foofood、foot、“There''''s evil afoot.”

返回页首返回页首

限定符

限定符提供了一种简单方法,用于指定在模式中允许特定字符或字符集自身重复出现的次数。有 3 个非显式限定符:

1.

*,描述“出现 0 或多次”。

2.

+,描述“出现 1 或多次”。

3.

?,描述“出现 0 或 1 次”。

限定符始终引用限定符前(左边)的模式,通常是单个字符,除非使用括号创建模式组。下面是一些模式示例及匹配的输入。

模式 输入(匹配)

fo*

foofoe、food、fooot、“forget it”、funny、 puffy

fo+

foofoe、food、foot、“forget it”

fo?

foo、foe、food、foot、“forget it”、funny、puffy

除了指定给定模式准确出现 0 或 1 次之外,? 字符还可强制模式或子模式匹配数目最少的字符(如果匹配输入字符串中的多个字符)。

除了非显式限定符(一般叫做限定符,但为区别于下一组,故称非显式限定符)之外,还有显式限定符。在模式出现次数方面,限定符的概念非常模糊。使用显式限定符则可准确指定数字、范围或数字集。显式限定符位于所应用的模式的后边,这一点与正则限定符一样。显式限定符使用花括号 {} 及其中的数字值表示模式出现次数的上下限。例如,x{5} 将准确匹配 5 个 x 字符 (xxxxx)。如果仅指定一个数字,则表示次数上限;如果数字后跟一个逗号,如 x{5,},表示匹配任何出现次数大于 4 的 x 字符。下面是一些模式示例及匹配的输入。

模式 输入(匹配)

ab{2}c

abbc、aaabbccc

ab{,2}c

acabcabbc、aabbcc

ab{2,3}c

abbcabbbc、aabbcc、aabbbcc

返回页首返回页首

元字符

在正则表达式中,有一种意义特殊的构造,即元字符。目前已知的元字符有很多,如 *?+{} 字符。其他字符在正则表达式语言中都有特殊的含义。这些字符包括:$ ^ . [ ( | ) ] \

.(句点或点)元字符是最简单但最常用的一个字符。它可匹配任何单字符。如果要指定某些模式可包含任意组合的字符,使用句点非常有用,但一定要在特定长度范围内。此外,我们知道表达式将对包含在较长字符串中的所有模式进行匹配,假如只需要精确匹配模式,又该怎么办?这在验证方案中经常出现,例如,要确保用户输入的邮政编码或电话号码的格式正确。使用 ^ 元字符可指定字符串(或行)的开始,使用 $ 元字符可指定字符串(或行)的结束。通过将这些字符添加到模式的开始和结束处,可强制模式仅匹配精确匹配的输入字符串。如果 ^ 元字符用在方括号 [ ] 指定的字符类的开头,也有特殊的含义。具体内容见下。

\ (反斜杠)元字符既可根据特殊含义“转义”字符,也可指定预定义集合元字符的实例。同样,具体内容见下。为了在正则表达式中包括文字样式的元字符,必须使用反斜杠进行“转义”。例如,如果要匹配以“c:\”开始的字符串,可使用:^c:\\。注意,要使用 ^ 元字符指出字符串必须以此模式作为开始,然后用反斜杠元字符转义文字反斜杠。

|(管道)元字符用于交替指定,特别用于在模式中指定“此或彼”。例如,a|b 将匹配包含“a”或“b”的任何输入内容,这与字符类 [ab] 非常类似。

最后,括号 ( ) 用于给模式分组。它允许使用限定符让一个完整模式出现多次。为了便于阅读,或分开匹配特定的输入部分,可能允许分析或重新设置格式。

下面列出元字符的一些使用示例。

模式 输入(匹配)

.

abc123

.*

Abc, 123, 任意字符串, 无字符时也匹配

^c:\\

c:\windowsc:\\\\\c:\foo.txtc:\ 后跟任何其他内容

abc$

abc123abc abc 结束的任意字符串

(abc){2,3}

abcabcabcabcabc

返回页首返回页首

字符类

字符类是正则表达式中的“迷你”语言,在方括号 [ ] 中定义。最简单的字符类只不过是括号中的一个字符表,如 [aeiou]。在表达式中使用字符类时,可在模式的此位置使用其中任何一个字符(但只能使用一个字符,除非使用了限定符)。请注意,不能使用字符类定义单词或模式,只能定义单个字符。

要指定任何数值数字,可以使用字符类 [0123456789]。但是,由于这样使用字符不大方便,所以要通过在括号中使用连字符 - 来定义字符的范围。连字符在字符类中有特殊的含义(不是在正则表达式中,因此,准确地说它不能叫正则表达式元字符),且仅在连字符不是第一个字符时,连字符才在字符类中有特殊含义。要使用连字符指定任何数值数字,可以使用 [0-9]。小写字母也一样,可以使用 [a-z],大写字母可以使用 [A-Z]。连字符定义的范围取决于使用的字符集。因此,字符在(例如)ASCII 或 Unicode 表中出现的顺序确定了在范围中包括的字符。如果需要在范围中包括连字符,将它指定为第一个字符。例如:[-.?] 将匹配 4 个字符中任何一个字符(注意,最后的字符是个空格)。另请注意,正则表达式元字符在字符类中不做特殊处理,所以这些元字符不需要转义。考虑到字符类是与其他正则表达式语言分开的一种语言,因此字符类有自己的规则和语法。

如果使用字符 ^ 作为字符类的第一个字符来否定此类,也可以匹配字符类成员以外的任何字符。因此,要匹配任何非元音字符,可以使用字符类 [^aAeEiIoOuU]。注意,如果要否定连字符,应将连字符作为字符类的第二个字符,如 [^-]。记住,^ 在字符类中的作用与它在正则表达式模式中的作用完全不同。

下面列出操作中使用的一些字符类。

模式 输入(匹配)

^b[aeiou]t$

Batbetbitbotbut

^[0-9]{5}$

11111, 12345, 99999

^c:\\

c:\windowsc:\\\\\c:\foo.txtc:\ 后跟任何其他内容

abc$

abc123abc abc 结束的任意字符串

(abc){2,3}

abcabcabcabcabc

^[^-][0-9]$

012、... (不匹配 -0、-1、 -2 等)

在 .NET Framework 的下一版中,代码名“Whidbey”作为一种新功能被添加

[1] [2]  下一页


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)

[Regex]ASP.NET 中的正则表达式-微软速成课程

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1344 更新时间:2009/4/23 10:45:01

ASP.NET 中的正则表达式

发布日期: 8/17/2004 | 更新日期: 8/17/2004

速成课程

Steven A. Smith

适用范围:
Microsoft® .NET Framework
Microsoft® ASP.NET
正则表达式 API

摘要:正则表达式是一种处理文本的有用工具。无论是验证用户输入、搜索字符串内的模式、还是以各种有效方式重新设置文本格式,正则表达式都非常有用。

下载本文的源代码。

*
本页内容
引言 引言 正则表达式使用历史简介 正则表达式使用历史简介 简单表达式 简单表达式 限定符 限定符 元字符 元字符 字符类 字符类 预定义的集合元字符 预定义的集合元字符 表达式示例 表达式示例 ASP.NET 中的验证 ASP.NET 中的验证 正则表达式 API 正则表达式 API 免费工具 免费工具 高级主题 高级主题 结论 结论 资源 资源 作者简介 作者简介

引言

Microsoft®.NET Framework 对正则表达式的支持是一流的,甚至在 Microsoft® ASP.NET 中也有依赖正则表达式语言的控件。本文介绍了深入学习正则表达式的基础知识和推荐内容。

本文主要面向对正则表达式知之甚少或没有使用经验,但却熟悉 ASP.NET、可借助 .NET 编程的初学者。此外,希望本文连同 regular expression cheat sheet 成为有正则表达式使用经验的开发者的手头参考资料或进修资料。本文讨论内容如下:

1.

正则表达式使用历史简介

2.

简单表达式

3.

限定符

4.

元字符

5.

字符类

6.

预定义的集合元字符

7.

表达式示例详细内容

8.

ASP.NET 中的验证

9.

正则表达式 API

10.

免费工具

11.

高级主题概述

12.

小结和其他资源

通常,如果对本文或对正则表达式有疑问,请访问 http://www.aspadvice.com/,通过 regex mailing list 提出问题。编写此文时其中已有 350 多个订户参与。

返回页首返回页首

正则表达式使用历史简介

正则表达式设计于五十年代,存在至今。正则表达式最初用于描述“正则集”,它们是一些神经生理学家研究的模式。正则表达式最早由数学家 Stephen Kleene 提出,最终由 Ken Thompson 在两种非常流行的文本实用程序 qed 和 grep 中使用。Jeffrey Friedl 在其著作“Mastering Regular Expressions (2nd edition)”中对此作了进一步阐述。建议那些希望更多了解正则表达式理论和历史的人看看这本书。

在最近的五十年中,正则表达式逐渐从模糊深奥的数学概念发展为在各类工具和软件包中应用的主要功能。尽管数十年来很多 UNIX 工具都支持正则表达式,但仅仅是近十年来,它才在大部分 Windows 开发者工具包中得到体现。在 Microsoft® Visual Basic® 6 或 Microsoft® VBScript 中,即使情况理想,正则表达式仍难以使用。但随着.NET Framework 的推行,正则表达式的支持发展到极点,所有 Microsoft 开发者和所有 .NET 语言都可以使用正则表达式。

那么,正则表达式究竟是什么呢?正则表达式是一种语言,它可以明确描述文本字符串中的模式。除了简单描述这些模式之外,正则表达式引擎通常可用于遍历匹配,并使用模式作为分隔符来将字符串解析为子字符串,或以智能方式替换文本或重新设置文本格式。正则表达式为解决与文本处理有关的许多常见任务提供了有效而简捷的方式。

在讨论正则表达式时,通常以正则表达式匹配(或不匹配)的文本为基础分析正则表达式。本文(以及 System.Text.RegularExpressions 类)将在正则表达式交互操作中引用 3 个参与对象:正则表达式的“模式”、“输入”字符串和字符串内的所有模式的“匹配”。

返回页首返回页首

简单表达式

最简单的正则表达式大家都已熟悉,即文字字符串。特定的字符串可通过文字本身加以描述;像 foo 这样的正则表达式模式可精确匹配输入的字符串 foo。在本例中,也将匹配如下输入:The food was quite tasty,如果希望精确匹配,这可能不是预期结果。

当然,使用正则表达式匹配等于它自身的精确字符串是没有价值的实现,不能体现正则表达式的真正作用。假如不查找 foo,而是查找以字母 f 开头的所有单词,或所有 3 个字母的单词,那该怎么办?目前,这超出了文字字符串的合理范围。我们需要更加深入地研究正则表达式。下面是一个文字表达式示例及一些匹配的输入。

教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台