2012-10-18 72 views
5

如何在JFlex中實現不區分大小寫的正則表達式模式。不區分大小寫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

使用指令中的一個:

  • %無殼
  • %忽略大小寫

the manual

此選項使JFlex處理規範中的所有字符和字符串,就好像它們以大寫和小寫形式指定一樣。這使您可以輕鬆地爲具有不區分大小寫的關鍵字的語言指定掃描儀。規範中的字符串「break」例如像表達式([bB] [rR] [eE] [aA] [kK])一樣處理。 %caseless選項不會更改匹配的文本並且不會影響字符類。所以[a]仍然只匹配角色a而不是A。哪些字母是大寫字母,哪些是小寫字母,由Unicode標準定義並由JFlex使用Java方法Character.toUpperCase和Character.toLowerCase確定。在JLex兼容模式下(命令行上的-jlex開關),%caseless和%ignorecase也會影響字符類。

+0

謝謝,這工作。 – ChrisM

+0

不客氣@ChrisMeli。 –

+0

+1但是,下次你應該更快地發佈答案:)) –