Как отфильтровать регистр без учета регистра в JTable

я пытаюсь отфильтровать свой JTable с помощью этого кода:

String eingabe = eingabeF.getText();
RowFilter.regexFilter(".*" + eingabe + ".*", 1)

это работает очень хорошо. НО я хочу отфильтровать его без учета регистра. Все значения в моем столбце «1» в начале имеют заглавные буквы.

Я пробовал это:

String eingabe = eingabeF.getText();
setRowFilter(RowFilter.regexFilter(("?i") + Pattern.quote(".*" + eingabe + ".*"), 1));

но я всегда получаю следующее сообщение об ошибке:

Exception in thread "AWT-EventQueue-3" java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
?i\Q.*f.*\E

person progNewbie    schedule 10.11.2013    source источник
comment
Это (?i), а не ?i. вы должны добавить скобки.   -  person Casimir et Hippolyte    schedule 10.11.2013
comment
Почему бы не написать :RowFilter.regexFilter("(?i).*" + Pattern.quote(eingabe) + ".*", 1)   -  person Casimir et Hippolyte    schedule 10.11.2013
comment
das lässt sich hören!   -  person Casimir et Hippolyte    schedule 10.11.2013


Ответы (1)


Во-первых, встроенный флаг без учета регистра — "(?i)", а не ("?i"). Во-вторых, вам не нужно ставить ".*" вокруг вашей строки. Сопоставитель найдет его в любом месте поля, если вы не окружите его "^" и "$". Гораздо проще инициализировать фильтр следующим образом:

RowFilter.regexFilter("(?i)" + eingabe, 1);
person Mad Physicist    schedule 28.11.2013