php - 谁能引导我找到正则表达式的 DEFINE 断言文档?

标签 php regex assertions

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

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

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

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

最佳答案

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

正如您所发现的,搜索单词“define”并不容易。我找到了一些可以帮助您入门的引用资料:

关于php - 谁能引导我找到正则表达式的 DEFINE 断言文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11659841/

相关文章:

kotlin - AssertJ 库是否有 Kotlin 等价物?

c++ - Q_ASSERT 发布构建语义

php - 拉维尔 "No scheduled commands are ready to run."

ios - 用至少一个点验证密码

regex - AWK - 基于正则表达式添加值

javascript - 为什么 `/\:/u` 会抛出 “invalid escape” 错误?

Try 中的 Java 断言与多个 catch

php - COM 对象方法未定义

php - 从文本字段捕获数据时如何忽略自动完成值?

php - 多次安装和升级后无法识别 codesniffer 命令