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{空白}

編集: コメントで既に返信されているのを見ませんでした: はバージョン 1.5\Sで導入されました。

于 2015-04-14T19:28:18.703 に答える