快速入门
教程
工具和语言
示例
参考
书籍评论
示例
正则表达式示例
数字范围
浮点数
电子邮件地址
IP 地址
有效日期
数字日期到文本
信用卡号
匹配完整行
删除重复行
编程
两个相近的单词
陷阱
灾难性回溯
过多重复
拒绝服务
使所有内容可选
重复捕获组
混合 Unicode 和 8 位
此网站上的更多内容
简介
正则表达式快速入门
正则表达式教程
替换字符串教程
应用程序和语言
正则表达式示例
正则表达式参考
替换字符串参考
书籍评论
可打印 PDF
关于此网站
RSS 提要和博客
RegexBuddy—The most comprehensive regular expression library!

正则表达式示例

在下面,您将找到许多示例模式,您可以使用这些模式并根据自己的目的进行调整。制作每个正则表达式所使用的关键技术均已说明,并附有指向 教程 中相应页面的链接,其中对这些概念和技术进行了详细说明。

如果您是正则表达式的初学者,您可以查看这些示例以了解其可能性。正则表达式非常强大。学习它们确实需要一些时间。但是,当您使用正则表达式在 EditPad ProPowerGREP 中自动执行搜索或编辑任务,或在 各种语言 中编写脚本或应用程序时,您会很快收回这段时间。

RegexBuddy 提供了快速掌握正则表达式的最快方式。RegexBuddy 将分析任何正则表达式,并以清晰易懂的详细大纲形式呈现给您。该大纲链接到 RegexBuddy 的正则表达式教程(您可以在本网站上找到相同的教程),您始终可以通过单击获取深入信息。

哦,而且您绝对不需要成为一名程序员才能利用正则表达式!

获取 HTML 标记

<TAG\b[^>]*>(.*?)</TAG> 匹配特定 HTML 标记的成对开闭标记。标记之间的任何内容都将被捕获到第一个 反向引用 中。正则表达式中的问号使星号 惰性,以确保它在第一个闭合标记之前停止,而不是像贪婪星号那样在最后一个闭合标记之前停止。此正则表达式不会正确匹配嵌套在自身内部的标记,例如在 <TAG>one<TAG>two</TAG>one</TAG> 中。

<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1> 将匹配任何 HTML 标记的成对开闭标记。务必关闭大小写敏感性。此解决方案的关键是使用正则表达式中的 反向引用 \1。标记之间的任何内容都将被捕获到第二个反向引用中。此解决方案也不会匹配嵌套在自身内部的标记。

修剪空白

您可以通过执行正则搜索和替换,轻松地从字符串或文本文件中的行首和行尾修剪不必要的空白。搜索 ^[ \t]+ 并替换为空,以删除前导空白(空格和制表符)。搜索 [ \t]+$ 以修剪尾随空白。通过将正则表达式组合成 ^[ \t]+|[ \t]+$ 来同时执行这两项操作。您可以将 [ \t](它匹配空格或制表符)扩展为 [ \t\r\n],以匹配字符类,如果您还想删除换行符。或者,您可以使用简写 \s

更详细的示例

数字范围。由于正则表达式使用文本而不是数字,因此匹配特定的数字范围需要格外小心。

匹配浮点数。还说明了使正则表达式中的所有内容都可选项的常见错误。

匹配电子邮件地址。关于匹配电子邮件地址的正确正则表达式有很多争议。这是一个完美的示例,说明您需要确切地知道您要匹配的内容(以及不匹配的内容),并且正则表达式复杂度和准确性之间始终存在权衡。

匹配 IP 地址.

匹配有效日期。一个正则表达式可以匹配 31-12-1999,但不能匹配 31-13-1999。

查找或验证信用卡号。验证在您的订单表单中输入的信用卡号。在文档中查找信用卡号以进行安全审核。

匹配完整行。展示如何匹配文本文件中的完整行,而不是仅匹配满足特定要求的行部分。还展示了如何匹配特定正则表达式不匹配的行。

删除重复行或项目。说明如何巧妙地使用捕获括号或反向引用。

用于处理源代码的正则表达式示例。如何匹配常见的编程语言语法,例如注释、字符串、数字等。

两个单词彼此相邻。展示如何使用正则表达式模拟某些工具具有的“相邻”运算符。

常见陷阱

灾难性回溯。如果您的正则表达式似乎永远无法完成,或者只是使您的应用程序崩溃,那么它很可能已经感染了灾难性回溯。解决方法通常是更具体地说明您想要匹配的内容,这样引擎必须尝试的匹配次数就不会呈指数级上升。

使所有内容都可选。如果正则表达式中的所有部分都是可选的,那么它将匹配任意位置的零长度字符串。您的正则表达式需要表达这样一个事实:根据存在哪些部分,不同的部分是可选的。

重复捕获组与捕获重复组。重复捕获组只会捕获组的最后一次迭代。如果您想捕获所有迭代,请捕获重复组。

混合 Unicode 和 8 位字符代码。将 8 位字符代码(如 \x80)与 Unicode 引擎和主题字符串一起使用可能会产生意外的结果。