为正则表达式分配一个变量名并在另一个正则表达式中使用它
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)
重复第一个模式并匹配 qw
、er
、ty
in qwerty
.
因此,您可以使用递归调用,而不是尝试从重复部分 "build" 您的模式。
所以在 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)
重复第一个模式并匹配 qw
、er
、ty
in qwerty
.
因此,您可以使用递归调用,而不是尝试从重复部分 "build" 您的模式。