# [Erledigt] Regex CASE INSENSITIVE



## DStrohma (23. Okt 2009)

Hi,

ich gebe einen Ausdruck in ein JTextField ein und will dass er mir alle Zeilen in einer JTable zeigt, die in einer angegebenen Spalte den eingegebenen Text enthalten. Funktioniert auch wunderbar! Nur will ich dass er NICHT zwischen Groß- / Kleinschreibung unterscheidet...

Wie mach ich das? Hier die Methode die ich verwende. Wobei 'tf_search' das JTextField ist das den zu suchenden Text enthält:


```
private void searchFilter() {
		RowFilter<DefaultTableModel, Object> rf = null;

		try {
			rf = RowFilter.regexFilter(tf_search.getText(), getSearchColumn());
		} catch (java.util.regex.PatternSyntaxException e) {
			return;
		}
		sorter.setRowFilter(rf);
	}
```

Hier noch zum Verständniss:


```
this.tf_search.getDocument().addDocumentListener(
                new DocumentListener() {
                    public void changedUpdate(DocumentEvent e) {
                        searchFilter();
                        getNumberOfVisibleItems();
                    }
                    public void insertUpdate(DocumentEvent e) {
                        searchFilter();
                        getNumberOfVisibleItems();
                    }
                    public void removeUpdate(DocumentEvent e) {
                        searchFilter();
                        getNumberOfVisibleItems();
                    }
                });
```


----------



## bygones (23. Okt 2009)

Pattern#CASE_INSENSITIVE


----------



## tfa (23. Okt 2009)

bygones hat gesagt.:


> Pattern#CASE_INSENSITIVE



Normalerweise schon, aber die Fabrikmethode RowFilter.regexFilter() nimmt leider nur eine Regex als String an. Die Möglichkeit Flags oder gleich ein fertiges Pattern-Objekt zu übergeben, ist nicht vorgesehen.
Ich würde sagen, ein Design-Fehler von Sun.


----------



## bygones (23. Okt 2009)

ah lol das ist ne Sun klasse ...

klappts mit dem [c]i[/c] flag vll ? ala [c]/meinPattern/i[/c] ?


----------



## DStrohma (23. Okt 2009)

Eigentlich hätte ich ja gern das hier verwendet:


```
Pattern pattern = Pattern.compile(tf_search.getText(), Pattern.CASE_INSENSITIVE);
```

aber wie bring ich mein Pattern mit 
	
	
	
	





```
RowFilter.regexFilter(String, int)
```
 in Verbindung??



> klappts mit dem i flag vll ? ala /meinPattern/i ?



 Ich kann 'Pattern' eben nicht verwenden... Oder hab ich dich falsch verstanden?


----------



## tfa (23. Okt 2009)

DStrohma hat gesagt.:


> aber wie bring ich mein Pattern mit
> 
> 
> 
> ...


Gar nicht. Siehe oben. Du kannst ja ein Bugreport bei Sun posten.
Oder du kopierst dir diese Filterklassen aus der Standard-API und änderst sie entsprechend.


----------



## bygones (23. Okt 2009)

DStrohma hat gesagt.:


> Ich kann 'Pattern' eben nicht verwenden... Oder hab ich dich falsch verstanden?


nicht als pattern - als String das Flag setzen

[c](?i).*(web-inf|test).*[/c] matcht alle strings die web-inf oder test oder WEB-INF oder Test oder so hat.


----------



## DStrohma (23. Okt 2009)

bygones hat gesagt.:


> nicht als pattern - als String das Flag setzen
> 
> [c](?i).*(web-inf|test).*[/c] matcht alle strings die web-inf oder test oder WEB-INF oder Test oder so hat.



Jetzt hab ich's kapiert ^^

Geht wundervoll... VIELEN DANK!!!

Sieht jetzt so aus: 
	
	
	
	





```
rf = RowFilter.regexFilter("(?i).*(" + tf_search.getText() + ").*", getSearchColumn());
```


----------

