我正在阅读coffeescript的lex源代码,我在IDENTIFIER下面的正则表达式
IDENTIFIER = /^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/;
不知道为什么(?!:)是必需的,虽然我知道它是一个非捕获负面的前瞻组
答案 0 :(得分:1)
要求匹配后不要跟第二个:
。没有它,匹配可以后面跟着第二个:
。因此,在输入foo::
的情况下,只有foo
匹配;在没有的情况下,给出输入foo::
,foo:
(带冒号)匹配。你可以在regex101上玩它。