任何人都可以引导我定义正则表达式的断言文档吗?

问题描述 投票:0回答:1

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

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

快速搜索我的掌握正则表达式书并没有产生任何快速结果。谷歌让我空手而归,用 ideone 在线测试得出的结果是,DEFINE 很可能是一些定义断言的关键字,因为我无法用例如“ FOOBAR。 ;-) ideone 测试链接:matching vs. non-matching

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

php regex assertion
1个回答
3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.