教程 > 正则表达式 阅读:306

正则表达式

了解如何使用和充分利用正则表达式


本教程包含要学习正则表达式所有所需的知识,以便能够编写功能强大的正则表达式,并且节省大量的时间。它以最基本的概念开始,因此即使您对正则表达式一无所知,也可以继续阅读本教程。

本教程不止于此。它还说明了正则表达式引擎如何在内部工作并预测匹配的可能结果。这可以帮助我们快速了解为什么我们写的正则表达式不符合最初的期望。当需要编写更复杂的正则表达式时,这将为我们节省大量的猜测时间和不必要的麻烦。

正则表达式究竟是什么-术语


基本上,正则表达式是描述一定数量文本的模式。他们的名字来自他们所基于的数学理论。但是我们不会深入探讨这一点。通常,我们会找到缩写为”regex“或“regexp”的名称。本教程使用“regex”。

下面是正则引擎大概的一个执行流程 正则表达式引擎执行过程

第一个示例实际上是一个完全有效的正则表达式。这是最基本的模式,只需匹配文字文本正则表达式即可。“匹配”是指正则表达式处理软件发现与之对应的一段文本,字节序列或字符序列。

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,}\b是更复杂的模式。它描述了一系列字母,数字,点,下划线,百分号和连字符,然后是@符号,然后是另一系列的字母,数字和连字符,最后是一个点和两个或多个字母。换句话说:此模式描述了一个电子邮件地址。

使用上述正则表达式模式,我们可以搜索文本文件以查找电子邮件地址,或验证给定的字符串是否看起来像电子邮件地址。本教程使用术语“字符串”来表示正则表达式所应用于的文本。该网站以红色突出显示它们。程序员使用术语“字符串”或“字符字符串”来表示字符序列。实际上,我们可以将正则表达式与我们正在使用的应用程序或编程语言可以访问的任何数据一起使用。   

不同的正则表达式引擎


正则表达式"引擎"也是一种软件,可以处理正则表达式,尝试将模式与给定的字符串进行匹配。通常,引擎是较大应用程序的一部分,我们不会直接访问引擎。而是,在需要时调用它,以确保将正确的正则表达式应用于正确的文件或数据。

和软件一样,不同的正则表达式引擎彼此之间并不完全兼容。特定引擎的语法和行为称为正则表达式类。本教程涵盖了所有流行的正则表达式的支持语言,包括Perl,PCRE,PHP,.NET,Java,JavaScript,XRegExp,VBScript,Python,Ruby,Delphi,R ,Tcl,POSIX等等。当这些支持者需要不同的语法或表现出不同的行为时,本教程会提醒您。即使本教程未明确涵盖您的应用程序,它也可能会使用涵盖的regex风格,因为大多数应用程序都是使用上述编程环境或regex库之一开发的。

所有内容


查看笔记