0
我球拍(here)的手册中看到的结构如下:条件的正则表达式[球拍]
(?‹tst›‹pces›|‹pces›) = Match 1st ‹pces› if ‹tst›, else 2nd ‹pces›
和下面的示例:
(regexp-match #rx"(?(?<=c)a|b)+" "cabal")
我不理解它。在哪种情况下这种正则表达式可能有用?
我球拍(here)的手册中看到的结构如下:条件的正则表达式[球拍]
(?‹tst›‹pces›|‹pces›) = Match 1st ‹pces› if ‹tst›, else 2nd ‹pces›
和下面的示例:
(regexp-match #rx"(?(?<=c)a|b)+" "cabal")
我不理解它。在哪种情况下这种正则表达式可能有用?
这在perl中被称为conditional expression
。它是更加明确写为
(?(condition)yes-pattern|no-pattern)
它匹配yes-pattern
如果condition
产生真正的价值,否则匹配no-pattern
。缺失的模式总是匹配。查看perl文档以获取更多信息here。(在此页面搜索“条件”)该页面提供了几乎所有有用的谓词,但不包括示例。
另一个例子可以找到here。有两个例子,英文/欧洲日期格式和一个关于邮件标题的例子。
而这一个从gnome developer doc。(在此页面搜索“条件子模式”)这里有几个例子。圆括号的例子是一个经典的例子,它也可以在perl regexp detailed manual中找到。
你不明白正则表达式的含义,或者你想要一个更好的用例吗? – halfelf
我完全无法想象这种结构如何有用。 – alinsoar
我认为其含义是:“如果表达式TST匹配,则尝试匹配下一个p1。其他p2。 >>。对 ?问题在于哪些情况有帮助。从来没有想过这样的建筑可能存在。 – alinsoar