正则表达式/语法
外观
< 正则表达式
正则表达式有几种变体。这些变体不仅在具体语法上有所不同,而且在功能上也有所不同。支持正则表达式的各个工具也各有其特点。
- 简单正则表达式 - 广泛用于向后兼容,但在符合 POSIX 的系统上已弃用。
- 基本正则表达式 - 一些 Unix shell 工具使用
- Perl 兼容正则表达式 - Perl 和一些应用程序使用
- POSIX 基本正则表达式 - 提供扩展以确保实用程序之间的一致性。一些传统的 Unix 工具实现不支持这些扩展。
- POSIX 扩展正则表达式 - 一些 Unix 实用程序可以通过 -E 命令行开关支持
- 非 POSIX 基本正则表达式 - 提供 POSIX 不支持的其他字符类
- Emacs 正则表达式 - Emacs 编辑器使用
- Shell 正则表达式 - 用于模式匹配和文件名替换的有限形式的正则表达式
量词(如 * 和 +)匹配尽可能多的字符:它们是贪婪的。对于某些用途,它们的贪婪性并不合适。例如,假设您想在以下文本中找到第一个用引号括起来的字符串
- 这些词包括“猫”、“垫”和“拍”。
模式 ".*"
匹配下面文本的斜体部分,即“猫”、“垫”和“拍”,而不是所需的“猫”
- 这些词包括“猫”、“垫”和“拍”。
为了解决这个问题,某些正则表达式风格提供了非贪婪运算符,如 *?、+?和 }?。在 PHP 中,在正则表达式的末尾添加“U”会使量词变为非贪婪,例如 /".*"/U
。在不支持这两种选项的风格中,您可以指定不要匹配的内容,例如 ("[^"]*")
来修复讨论的示例。但是,在处理括号表达式时,(\[\[[^\]]*\]\])
无法匹配A B C [[D E] F G]]。
一个比较表或矩阵,显示哪些正则表达式的特性或风格在哪个工具或编程语言中可用,可从 regular-expressions.info 获取。