2012-10-18 17 views
5

W jaki sposób uzyskuje się niewrażliwe na wielkość znaków wzorce regularnego wyrażenia w JFlex.Niewrażliwe na wielkość liter JFlex regex

Używanie notacji standardowej (? I :) nie działa.

Na przykład:

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

Odpowiedz

4

użyć jednej z dyrektyw:

  • % bezłuskową
  • % ignorecase

Od the manual:

Ta opcja powoduje, że JFlex obsługuje wszystkie znaki i ciągi w specyfikacji tak, jakby były podane zarówno wielkimi, jak i małymi literami. Pozwala to w łatwy sposób określić skaner dla języka, w którym słowa kluczowe są niewrażliwe na wielkość liter. Ciąg "break" w specyfikacji jest na przykład traktowany jak wyrażenie ([bB] [rR] [eE] [aA] [kK]). Opcja% caseless nie zmienia dopasowanego tekstu i nie ma wpływu na klasy znaków. Zatem [a] nadal pasuje tylko do postaci a, a nie do A. Które litery są wielkie i które są pisane małymi literami, jest zdefiniowany przez standard Unicode i określony przez JFlex za pomocą metod Java Character.toUpperCase i Character.toLowerCase. W trybie zgodności JLex (przełącznik -jlex w wierszu poleceń)% caseless i% ignorecase również wpływają na klasy znaków.

+0

Dzięki, to zadziałało. – ChrisM

+0

Nie ma za co. @ChrisMeli. –

+0

+1 Ale następnym razem powinieneś opublikować odpowiedź szybciej :)) –

Powiązane problemy