为正则表达式分配变量名称,并在另一个正则表达式中使用它



所以在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中匹配qwerty

演示

因此,与其尝试从重复部分"构建"模式,不如使用递归调用。

相关内容

最新更新