我正在寻找Regexp :: Grammars的一个例子。该示例有一个围绕* COMMIT的注释,说明它将如何改进错误消息。我找不到关于* COMMIT的任何文档。它有什么作用 ?我已经包含了以下示例的一部分:
ksh
答案 0 :(得分:4)
(*COMMIT)
记录在perlre。
(*COMMIT)
在一个分支在达到某一点后失败时导致整个交替失败很有用。
$ perl -E'
say "$_: ", /
^
(?: a (*COMMIT) b
| c (*COMMIT) d
| . z
)
/sx ?1:0
for qw( ab cd az yz );
'
ab: 1
cd: 1
az: 0
yz: 1
你本可以编写以下内容,但它可能效率低得多,而且在更复杂的例子中写得难得多:
/
^
(?: a b
| c d
| [^ac] z
)
/x
答案 1 :(得分:0)
它是回溯控制动词,在perlre中描述
基本上它会强制正则表达式失败,如果模式的后期部分不匹配并且会导致正则表达式引擎回溯到它中