所以在flex中,我试图分配这些:
ID letterletter*
NUM digitdigit*
letter [a-zA-Z]
digit [0-9]
但是 flex 告诉我,ID 和 NUM 是无法识别的规则。绕过此问题的一种方法是将 ID 设置为[0-9][0-9]*
,但我想使用字母和数字。
这可能吗?
试试这个:
ID {letter}{letter}*
NUM {digit}{digit}*
letter [a-zA-Z]
digit [0-9]
ID 和 NUM 也是如此,无论您在哪里使用它们。
你不需要做这样的事情,这是不必要的。您可以递归模式包装在一个组中,如下所示:([a-zA-Z])(?1)
.(?1)
重复第一种模式,并在qwerty
中匹配qw
、er
、ty
。
演示
因此,与其尝试从重复部分"构建"模式,不如使用递归调用。