Regex 带空格的lex扩展失败

Regex 带空格的lex扩展失败,regex,flex-lexer,lex,Regex,Flex Lexer,Lex,我想要一个规则来匹配除空格外的所有内容: [^ \t\n\r\f\v] {} 但我想用一个扩展: BLANK [ \t\n\r\f\v] %% [^{BLANK}] {} 但扩张失败了 我可以做[^[:space:],但我想知道为什么扩展不起作用 为什么??我如何展开它?因为不能在字符类内展开名称 请注意,在字符类中,所有正则表达式 除了转义(\)和 字符类运算符,-,],以及,在 类,^ (引用自底部附近的。) 换句话说,名称扩展{name}是正则表达式中的一个术语。这不是宏观扩张 顺便说

我想要一个规则来匹配除空格外的所有内容:

[^ \t\n\r\f\v] {}
但我想用一个扩展:

BLANK [ \t\n\r\f\v]
%%
[^{BLANK}] {}
但扩张失败了

我可以做
[^[:space:]
,但我想知道为什么扩展不起作用


为什么??我如何展开它?

因为不能在字符类内展开名称

请注意,在字符类中,所有正则表达式 除了转义(
\
)和 字符类运算符,
-
]
,以及,在 类,
^

(引用自底部附近的。)

换句话说,名称扩展
{name}
是正则表达式中的一个术语。这不是宏观扩张


顺便说一句,在大多数情况下,名称的展开部分用括号括起来。(您可以在中看到。)

\S在lex regex中不起作用(如\d,\w,…),好的,我可以做
[^[:space:]
,但我想知道为什么扩展不起作用啊,好的。我读过,虽然我认为名称扩展是一个lex特性,充当宏扩展。但它是一个正则表达式功能,因此被视为一个操作符。谢谢