我偶然发现了nikic写的这篇不错的博客文章,标题为正则表达式的真正力量。我看到他的正则表达式使用 DEFINE 断言创建一个正则表达式,以符合 RFC 的方式匹配电子邮件。命名捕获很好,但我真正想知道的是有关 DEFINE 断言的一些文档。简化示例:
/(?(DEFINE)(?<NUM>[0-9]))^(?&NUM)$/
快速搜索我的掌握正则表达式书并没有产生任何快速结果。谷歌让我空手而归,用 ideone 在线测试得出的结果是,DEFINE 很可能是一些定义断言的关键字,因为我无法用例如“ FOOBAR。 ;-) ideone 测试链接:matching vs. non-matching
非常感谢任何解释、搜索关键字、提示或一些不错的文档的链接。提前致谢。 :-)
(DEFINE)
是一种定义命名子模式的方法。在上面的示例中,您定义了 NUM
子模式,然后使用它 (?&NUM)
。在 nikic 的链接示例中,一大堆命名子模式是相互使用定义的,这些子模式在 ?&addr_spec
中累积。
正如您所发现的,搜索“定义”一词并不容易。我找到了一些参考资料来帮助您入门: