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

Assign a regular expression a variable name and use it in another regular expression

所以在 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 in qwerty.

Demo

因此,您可以使用递归调用,而不是尝试从重复部分 "build" 您的模式。