10

JFlexで大文字と小文字を区別しない正規表現パターンをどのように実現しますか。

標準(?i:)表記を使用しても機能しないようです。

例えば:

To match the case insensitive word "class", the regex would be (?i:class).
But this doesn't work in a JFlex specification.
4

1 に答える 1

7

次のディレクティブのいずれかを使用します。

  • %ケースレス
  • %ignorecase

マニュアルから:

このオプションにより、JFlex は指定内のすべての文字と文字列を大文字と小文字の両方で指定されているかのように処理します。これにより、大文字と小文字を区別しないキーワードを使用して、言語のスキャナーを簡単に指定できます。仕様の文字列「break」は、たとえば、式 ([bB][rR][eE][aA][kK]) のように処理されます。%caseless オプションは、一致したテキストを変更せず、文字クラスに影響を与えません。したがって、[a] は文字 a のみに一致し、A にも一致しません。どの文字が大文字でどの文字が小文字であるかは、Unicode 標準によって定義され、Java メソッドの Character.toUpperCase および Character.toLowerCase を使用して JFlex によって決定されます。JLex 互換モード (コマンド ラインで -jlex スイッチ) では、%caseless と %ignorecase も文字クラスに影響します。

于 2012-10-18T20:45:08.983 に答える