.NET把Windows开发者引入到正则表达式的世界

ZDNet软件频道 时间:2003-05-29 作者:ZDNet China |  我要评论(2)
本文关键词:
在本文中,我只是尝试引起你对构造正则表达式的兴趣并去除你对它的神秘感。我见识过正则表达式的威力,你不妨也试试。
本文译自Builder.com,未经许可请勿转载正则表达式(regular expression,即Regex)是说明大块文本的一种模式(pattern)。正则表达式引擎把这种模式运用到源文件文本中去。最初的源文本是不相关的——它可以是文本文件、网页的HTML源代码、甚至是数据库表格中的一个栏。

只需要使用几种记号(token),你就可以描述出复杂的模式,而且你还可以对这些模式作些很酷的事,如算术运算(也就是说,计算该模式出现的次数)。

正则表达式应用程序

用到正则表达式的应用程序太多了,以至于不能在本文全部列出,但我们还是列出了一部分让你大概看看正则表达式有些什么作用:

  • 验证用户数据的有效性,用户数据(如电话号码、信用卡号码、电子邮件地址等等)可以来自网站或者本地应用程序。
  • 在文本文件中搜索诸如“莎士比亚全集”(字数不得少于10个字符或者任意指定的字符数)这样的字句,或者搜索“love”以及“horse”(忽略大小写)并报告它们出现的位置和次数。
  • 把重要的数据,如各个网站给出的足球比赛日程表,保存到我自己的数据库中去。
  • 对网站搜索引擎来说,为正则表达式保持一个智能的前端并写出模式;然后所有其它工作交由.NET处理。

模式识别

模式是一个字符序列的代数表达式,它满足递加性(也就是说模式可以包含一系列其它模式)和递归性(也就是说模式可以包含子模式)。A列出了正则表达式中常见的标记。

 
表A

标记

含义

.

匹配任何单个字符(也就是说,“w.e”匹配“Brawley”,这里“.”匹配单字符“l”)。



用来指明不用考虑前后字符的单词(也就是说,定界符是空格、制表符或者逗号都不要紧)。

w

匹配任何单词字符(即A~Z、a~z,以及0~9)。

W

匹配任何非单词字符(即除A~Z、a~z,以及0~9之外的字符。

d

匹配任何数字。

D

匹配任何非数字。

.

表示你实际上搜索点号的换码序列(因为点号有其它意义,所以需要用换码的方式表示它)。

s

表示任何白空格(可以是制表符也可以是空格,我们并不关心它具体是什么)。

S

表示任何非白空格。

^

字符串或者行的起始标记。

$

字符串或者行的结束标记。

*

用于指示零或者大于零发生了。

?

指示任意字符(也就是说,零或者一发生了。

+

前一标记出现一次或者多次(也就是说“w+”表示匹配任何字)。

[]

表示一个范围,如[A-Z]表明匹配任何大写字母。

|

OR(或)运算符,用来指示感兴趣的匹配的集合
(也就是说,“ABC|BCD|DEF”匹配任何含有这三个序列中任意一个或者多个的字符串。

()

与“|”相同。

常见正则表达式标记

例如,模式“M[aeiouy]”表示以字符“M”开头,后面跟着任何元音字母(a、e、i、o、u或者y)的字符组合,而模式“M[^aeiouy]”表示字符“M”后没有跟着元音字母的字符组合。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134