0

我在 Racket 的手册中看到以下结构:

(?‹tst›‹pces›|‹pces›) = Match 1st ‹pces› if ‹tst›, else 2nd ‹pces›

以及以下示例:

(regexp-match #rx"(?(?<=c)a|b)+" "cabal")

我不明白。这种正则表达式在哪种情况下可能有用?

4

1 回答 1

3

conditional expression这在 perl 中被调用。更清楚地写成

(?(condition)yes-pattern|no-pattern)

yes-pattern如果condition产生真值则匹配,否则no-pattern匹配。缺失的模式总是匹配的。在此处查看 perl 文档以获取更多信息。(在此页面中搜索“条件”)此页面提供了几乎所有有用的谓词,但不包括示例。

另一个例子可以在这里找到。有两个示例,英语/欧洲日期格式和一个关于邮件标题的示例。

而这个来自gnome 开发者文档。(在此页面中搜索“条件子模式”)这里有几个示例。括号示例是经典示例,也可以在perl regexp 详细手册中找到。

于 2012-12-03T10:37:47.300 回答