条件正则表达式[球拍]

时间:2012-12-03 09:39:32

标签: regex racket

我在Racket手册(here)中看到以下结构:

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

以及以下示例:

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

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

1 个答案:

答案 0 :(得分:3)

这在perl中称为conditional expression。写作

更清楚
(?(condition)yes-pattern|no-pattern)

如果yes-pattern产生真值,则匹配condition,否则匹配no-pattern。丢失的模式始终匹配。检查perl doc以获取更多信息here。(在此页面中搜索“condition”)此页面提供几乎所有有用的谓词,但不包括示例。

可以找到另一个例子here。有两个例子,英文/欧洲日期格式和一个关于邮件标题。

这个来自gnome developer doc。(在本页中搜索“条件子模式”)这里有几个例子。括号示例是经典示例,也可以在perl regexp detailed manual中找到。