0

我想匹配非空格字符,所以我用 JFlex 定义了 flex 文件:

%%

Value = [\S]+

%%

{Value}   { return MyTokens.Value; }
.         { return MyTokens.BadCharacter; }

然后我尝试生成的java代码来分析字符串“abc”,但我得到:

BadCharacter(a)
BadCharacter(b)
BadCharacter(c)

如果我将声明更改为:

Value = [a-z]+

然后我可以得到预期的结果:

Value(abc)

为什么\S不工作?这不是“非空白”的意思吗?

4

1 回答 1

1

\S确实应该匹配非空白代码点。

从手册:

这些元字符等价于以下内容:
\S \P{Whitespace}

编辑:我没有看到您已经在评论中回复: 在1.5 版\S中引入。

于 2015-04-14T19:28:18.703 回答