2

我偶然发现了 nikic 的一篇不错的博客文章,标题为正则表达式的真正力量。我看到他的正则表达式使用 DEFINE 断言创建一个正则表达式,以符合 RFC 的方式匹配电子邮件。命名的捕获很好,但我真正想知道的是关于 DEFINE 断言的一些文档。简化示例:

/(?(DEFINE)(?<NUM>[0-9]))^(?&NUM)$/

快速搜索我的精通正则表达式这本书并没有快速得出任何结果。谷歌让我空手而归,用 ideone 在线测试导致结果,即 DEFINE 很可能是定义断言的一些关键字,因为我不能用例如 FOOBAR 替换这个词。;-) 指向 ideone 测试的链接:匹配不匹配

非常感谢任何解释、搜索关键字、提示或指向一些不错的文档的链接。提前致谢。:-)

4

1 回答 1

3

(DEFINE)作为定义命名子模式的一种方式。在上面的示例中,您正在定义NUM子模式,然后使用它(?&NUM)。在 nikic 的链接示例中,一大堆命名的子模式是相互定义的,它们累积在?&addr_spec.

如您所见,搜索“定义”一词并不容易。我找到了一些参考资料来帮助您入门:

于 2012-07-26T00:02:10.453 回答