术语汇编 全面剖析Perl正则表达式用法

开发 架构
Perl语言中Perl正则表达式有很多值得学习的地方,你对它的概念是否了解,这里和大家分享一下,希望本文的介绍能让你有所收获。

本文和大家重点讨论一下Perl正则表达式的概念以及它的起源,Perl正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Perl正则表达式的作用也很明显,其中之一就是它可以测试字符串的某个模式,至于其他作用请看本文详细介绍。

Perl正则表达式简介

1.Perl正则表达式

如果原来没有使用过Perl正则表达式,那么可能对这个术语和概念会不太熟悉。不过,它们并不是您想象的那么新奇。

请回想一下在硬盘上是如何查找文件的。您肯定会使用?和*字符来帮助查找您正寻找的文件。?字符匹配文件名中的单个字符,而*则匹配一个或多个字符。一个如'data?.dat'的模式可以找到下述文件:

data1.dat

data2.dat

datax.dat

dataN.dat

如果使用*字符代替?字符,则将扩大找到的文件数量。'data*.dat'可以匹配下述所有文件名:

data.dat

data1.dat

data2.dat

data12.dat

datax.dat

dataXYZ.dat

尽管这种搜索文件的方法肯定很有用,但也十分有限。?和*通配符的有限能力可以使你对Perl正则表达式能做什么有一个概念,不过Perl正则表达式的功能更强大,也更灵活。

2.早期起源

早期起源

Perl正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。WarrenMcCulloch和WalterPitts这两位神经生理学家研究出一种数学方式来描述这些神经网络。

1956年,一位叫StephenKleene的美国数学家在McCulloch和Pitts早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了Perl正则表达式的概念。Perl正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“Perl正则表达式”这个术语。

随后,发现可以将这一工作应用于使用KenThompson的计算搜索算法的一些早期研究,KenThompson是Unix的主要发明人。Perl正则表达式的***个实用应用程序就是Unix中的qed编辑器。

如他们所说,剩下的就是众所周知的历史了。从那时起直至现在Perl正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。

3.使用Perl正则表达式

在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的。

使用Perl正则表达式,就可以:

1.测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。

2.替换文本。可以在文档中使用一个Perl正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。

3.根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。

例如,如果需要搜索整个web站点来删除某些过时的材料并替换某些HTML格式化标记,则可以使用Perl正则表达式对每个文件进行测试,看在该文件中是否存在所要查找的材料或HTML格式化标记。用这个方法,就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用Perl正则表达式来删除过时的材料,***,可以再次使用Perl正则表达式
查找并替换那些需要替换的标记。

另一个说明Perl正则表达式非常有用的示例是一种其字符串处理能力还不为人所知的语言。VBScript是VisualBasic的一个子集,具有丰富的字符串处理功能。与C类似的VisualBasicScriptingEdition则没有这一能力。Perl正则表达式给VisualBasicScriptingEdition的字符串处理能力带来了明显改善。不过,可能还是在VBScript中使用Perl正则表达式的
效率更高,它允许在单个表达式中执行多个字符串操作。

本篇文章来自<Ahref='http://www.soidc.net'>IDC专家网</a>原文链接:http://www.soidc.net/articles/1213781277395/20000824/1215945421383_1.html

【编辑推荐】

  1. Perl正则表达式的三种形式
  2. 解析Perl正则表达式中的模式
  3. Perl正则表达式的八大原则
  4. 浅析Perl面向对象编程用法
  5. 学习笔记 全面认识Perl正则表达式
责任编辑:佚名 来源: csdn.net
相关推荐

2010-07-19 10:40:16

Perl正则表达式

2010-07-14 09:37:46

Perl正则表达式

2010-07-14 09:47:04

Perl正则表达式

2010-07-15 17:50:47

Perl模式

2010-08-12 10:35:06

Flex正则表达式

2010-07-13 16:56:30

Perl正则表达式

2010-07-14 15:05:21

Perl文件句柄

2010-07-28 15:21:01

Flex函数

2010-07-13 10:21:19

2010-07-13 17:03:53

Perl正则表达式

2010-07-14 09:01:18

Perl正则表达式

2010-07-19 16:56:56

Perl线程

2010-07-26 16:54:15

Perl引用

2010-07-13 09:02:16

Perl

2010-07-22 09:12:05

Perl正则表达式

2010-07-13 09:58:51

Perl关联数组

2010-08-09 13:58:59

Flex正则表达式

2010-07-20 09:05:08

Perl类

2010-09-26 17:04:48

JVMJava虚拟机

2010-03-03 13:31:25

Linux正则表达式
点赞
收藏

51CTO技术栈公众号