什么是正则表达式?

文章

正则表达式(英文:Regular Expression,简称 Regex)是定义搜索模式的字符序列。正则表达式用于匹配、查找、替换或验证字符串——从简单的单词搜索到复杂的文本处理任务。所有主流编程语言都内置了正则表达式引擎,使其成为开发者工具箱中最通用的工具之一。

想要交互式地测试正则表达式?

打开正则表达式测试工具 →

历史

正则表达式起源于形式语言理论。数学家 Stephen Cole Kleene 在 1950 年代将其作为描述正则语言的符号引入。Ken Thompson 在 UNIX 文本编辑器 ed 以及后来的 grep(1973)中实现了正则表达式。Perl(1987)大幅扩展了语法,并推广了 PCRE(Perl 兼容正则表达式)方言,这是当今大多数现代语言所遵循的标准。

基本语法

正则表达式是写在分隔符之间的模式(在 JavaScript 中:/模式/标志)。模式可以包含字面量字符、特殊元字符和量词。

/* 电子邮件验证正则表达式 */
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

/* 匹配:user@example.com */
/* 不匹配:notanemail */

核心概念

常用模式

标志

使用场景

注意事项

常见问题

什么是正则表达式?

正则表达式(Regex)是定义搜索模式的字符序列。用于在文本中匹配、查找、替换或验证字符串。所有主流编程语言都支持正则表达式。

Regex 代表什么?

Regex 是 Regular Expression(正则表达式)的缩写。该术语来自数学家 Stephen Cole Kleene 在 1950 年代发展的形式语言理论。

正则表达式有什么用?

正则表达式用于输入验证(电子邮件、电话、密码)、文本编辑器中的搜索替换、日志文件解析、Web 框架中的 URL 路由以及从非结构化文本中提取数据。

正则表达式在所有编程语言中都相同吗?

大多数语言支持基于 PCRE 的通用核心语法。JavaScript、Python、Java 和 PHP 都使用 PCRE 兼容引擎,但标志和一些高级功能在语言之间可能有所不同。

正则表达式中 * 和 + 有什么区别?

* 量词匹配前面元素的零次或多次出现。+ 量词匹配一次或多次出现。因此 a* 可以匹配空字符串,而 a+ 至少需要一个 "a"。

正则表达式中 ^ 是什么意思?

^ 有两种含义。在模式开头,它是匹配字符串开头(多行模式下为行开头)的锚点。在字符类 [^abc] 内,它表示否定——匹配除列出字符之外的任意字符。

相关文章

参考资料