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

时间:2018-10-03 11:35:13

标签: flex-lexer lex

因此在flex中,我尝试分配这些:

ID     letterletter*
NUM    digitdigit*
letter [a-zA-Z]
digit  [0-9]

但是flex告诉我ID和NUM是无法识别的规则。绕过此问题的一种方法是将ID设置为[0-9][0-9]*,但我想使用字母和数字。

这可能吗?

2 个答案:

答案 0 :(得分:1)

尝试一下:

ID     {letter}{letter}*
NUM    {digit}{digit}*
letter [a-zA-Z]
digit  [0-9]

在任何使用ID和NUM的地方都一样。

答案 1 :(得分:0)

您不需要这样做,这是不必要的。您可以递归包装在组中的模式,例如:([a-zA-Z])(?1)(?1)重复第一个模式并匹配qw中的ertyqwerty

Demo

因此,您可以尝试使用递归调用,而不必尝试通过重复部分来“构建”模式。