我试图匹配伪代码语言的字母数字符号,例如:
int i = 1;
int j = 2;
int k = i+j;
if (k > 2)
k = k + 1;
fi;
loop (i < 10)
i = i + 1;
j = j + 1;
k = i + j;
print(k);
pool;
其中i,j,k
是变量符号,int
是类型符号,if,loop
是范围符号。我尝试将它们与ID
令牌ID : [a-zA-Z][a-zA-Z0-9]*;
进行匹配,但是当我将其更改为[a-zA-Z][a-zA-Z0-9]+;
时,除了loop
之外,它将不会匹配任何这些令牌。我知道*
表示匹配0或多,+
表示匹配1或多。根据我的理解,他们都应该匹配这些令牌,为什么只有*
有效?