我想在flex中定义一个“ KEYER”,它是“ []”中的一个“ KEY”。 “ KEY”以字母和一串字母,数字和以下字符开头:“〜_'?$。-”。 我发现:
keyChar ([a-zA-z0-9~_'?$. \-])
letter ([a-zA-Z])
key ({letter}{keyChar}+)
keyer ("["{key}"]")
和:
<*>{keyer} print("KEYER");
以某种方式输入:
[keyer1] [keyer2] [keyer 3]
被读为一个KEYER,而不是三个。我做错了什么?
答案 0 :(得分:2)
您在A-z
的模式中写了A-Z
而不是keyChar
。 [A-z]
包含Z
和a
之间的字符,并包含方括号。
总的来说,最好在不需要时避免使用范围表达式。我会写:
keyChar ([[:alnum:]~_'?$. -])
key ([[:alpha:]]{keyChar}+)
keyer ("["{key}"]")