- 作者:xiaoxiao
- 发表时间:2020-12-23 10:35
- 来源:未知
想必很多读者都写过给程序代码按语法着色的程序。而这在一段时间以前是一件很困难的事。你需要写大量代码分析语法——而这往往又是最困难的部分。直到, 正则表达式(Regular Expression)的出现,我们才可以从繁重的工作中解脱。正则表达式提供了一系列方法(标准、模式),使我们 能够高效地创建、比较和修改字符串,以及迅速地分析大量文本和数据以搜索、移除和替换文本模式 [1] 。DotNET Framework 提供了 System.Text.RegularExpression 命名空间来实现他们承诺的功能。
1. 正则表达式 [2]
首先,我想先简单介绍一下正则表达式。
正则表达式最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到熔融信息技术领域。自从那时起,正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被Open Group组织认定。
正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本的一种标准。它具有两种标准:基本正则表达式(BRE),扩展正则表达式(ERE)。ERE包括BRE功能和另外其它的概念。
先进已有xsh,egrep,sed,vi以及在UNIX平台下的程序实现了正则表达式。它们可以被很多语言采纳,如HTML 和XML,这些采纳通常只是整个标准的一个子集。随着正则表达式移植到交叉平台的程序语言的发展,它的功能也日益完整,使用也逐渐广泛。
2. 相关的表达式
有关正则表达式我只能说这么多了——它是一个不小的知识体系,不可能用只言片语就解释清楚。这里我只介绍与C#语法分析相关的结个匹配串。详细内容请参见本Blog站的收藏 Regular Expression Specification [ The Open Group ] 。 另外,如果你已经对正则表达式有了相当的了解,那你可以略过下面每一条的解释,以尽快完成全文。
i> 字符串 "(//?.)*?" 正则表达式中除 . $ ^ { [ ( | ) * + ? / 外,其他字符与自身匹配。在上面的式子中,两边的quotation mark就是指匹配字符串两边的引号。“//”表示一个“/”字符。后面紧跟的“?”表示匹配零个或一个字符。“.” 与除 /n 之外的任何字符匹配。 |