任何人都可以带我去正则表达式的DEFINE断言文档吗?

时间:2012-07-25 22:51:11

标签: php regex assertions

我偶然发现this nice blog post by nikic标题为正则表达式的真正力量。我看到他的正则表达式使用DEFINE断言来创建一个与RFC一致的电子邮件匹配的正则表达式。命名的捕获很好,但我真正想知道的是关于DEFINE断言的一些文档。简化示例:

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

快速搜索我的掌握正则表达式书并没有产生任何快速结果。谷歌让我空手而归,在线测试导致了结果,DEFINE很可能是定义断言的一些关键词,因为我不能用例如替换这个词。 FOOBAR。 ;-)链接到ideone测试:matchingnon-matching

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

1 个答案:

答案 0 :(得分:3)

(DEFINE)用作定义命名子模式的方法。在上面的示例中,您将定义NUM子模式,然后使用它(?&NUM)。在nikic的链接示例中,使用彼此定义了一大堆命名子模式,这些子模式累积在?&addr_spec中。

正如您所发现的,搜索“定义”这个词并不容易。我找到了一些可以帮助你入门的参考资料: