java rowfilter regex Locale

时间:2018-10-23 15:32:21

标签: java regex jtable rowfilter

我有一个填充的JTable,并且具有不区分大小写的行过滤器:

RowFilter rf = RowFilter.regexFilter("(?i)"+filterText.getText(), 0);

这很好用,直到在JTextfield中输入åäöÅÄÖ使用本地字母为止。不区分大小写不适用于这些字母。

有人知道如何使正则表达式过滤器与本地化字母一起工作吗?

1 个答案:

答案 0 :(得分:1)

根据我的评论进行回答:

如果在不区分大小写的选项旁边加上UNICODE_CASE选项标记Pattern,则应该获得所需的结果。

由于这是一种构造好的模式,因此只需在(?iu)之前加上(?i)

作为参考,文档中标有UNICODE_CASE标志...

  

启用可识别Unicode的大小写折叠。

     

如果指定了此标志,则不区分大小写的匹配   由CASE_INSENSITIVE标志启用的方式是一致的   Unicode标准。默认情况下,不区分大小写的匹配   假设只有US-ASCII字符集中的字符   匹配。

     

也可以通过内嵌的标记启用支持Unicode的大小写折叠   表达式(?u)。

     

指定此标志可能会导致性能下降。