Regulärer Ausdruck für 2 Wörter

goodcat

Aktives Mitglied
Hi ich habe eine Frage bezüglich der Regulären Ausdrücke...
Ich habe gestern fast 2 Std. mit der Suche nach einem Ausdruck bzw. versucht die Ausdrücke zu begreifen.

Also ich habe eine Gui und möchte eine Suchfunktion mit setRowFilter(RowFilter.regexFilter("AUSDRUCK"));
nutzen. Ich habe eine Textsuche über ein JTextField und zusätzlich eine Suche über eine JComboBox, die aus einer MySql Datenbank gefüllt wird (via DefaultComboBoxModel).. Als Hintergrundinformatioen.

Jetzt benötige ich einen Ausdruck (wenn beide Felder benutzt werden (JTextField und JComboBox) ) der nach beiden "Wörtern" bzw. Strings (Zahlen, Wörter, Sonderzeichen etc. (aber nicht nur übereinstimmungen auch unvollständige Wörter... tes (test))) sucht. Und mir nur die Datensätze anzeigt wenn der Inhalt beider Felder gefunden wurde.

Hier der Code zu meiner Methode die die aufgerufen wird wenn eines der beiden oder beide Felder gefüllt sind.

Java:
private void setFilter() {
		
		if ( this.searchPhrase.isEmpty() && this.searchCustomer.isEmpty() ) {
			sorter.setRowFilter(RowFilter.regexFilter("."));
		}
		if ( !this.searchPhrase.isEmpty() && this.searchCustomer.isEmpty()) {
			sorter.setRowFilter(RowFilter.regexFilter("(?i)^.*" + this.searchPhrase + ".*"));
		}
		if ( this.searchPhrase.isEmpty() && !this.searchCustomer.isEmpty()) {
			sorter.setRowFilter(RowFilter.regexFilter("(?i)^.*" + this.searchCustomer + ".*"));
		}
		if ( !this.searchPhrase.isEmpty() && !this.searchCustomer.isEmpty()) {
			sorter.setRowFilter(RowFilter.regexFilter(".[*((?i)^.*" + this.searchPhrase + ".*)].*.[((?i)^.*" + this.searchCustomer + ".*)]*"));

	}

Die letzt IF Abfrage macht mir Probleme. Ich bekomme das einfach nicht gebacken. Alternativ könnte ich auch die Datenbank "Fragen" und jedesmal eine dynamisch generierten SQL Query abschicken aber ich finde da die Daten sowieso in Form einer DefaultTableModel vorliegen schwachsinn die DB damit zu "belästigen" 😉

Ich hoffe jemand hat eine Idee oder einen Tipp wie der Ausdruck auszusehen hat. Die ersten drei IF Abfragen bzw die Ausdrücke funzen 1A...

Danke Goodcat
 
Hi,

also searchPhrase*searchCustomer funzt nicht.
Unter anderen muss er ja Groß/kleinschreibung ignorieren etc.

Also was 1 searchString angeht hat es super mit
Java:
(?i)^.*" + this.searchPhrase + ".*
funktioniert. Allerdings muss zusätzlich noch der 2te String (this.searchCustomer) dazu.
 
Hat sich erledigt ich werde eine Suchanfrage an den SQL Server schicken.
Der RowSorter den ich verwenden wollte treibt mich in den wahnsinn... :bahnhof:

Trotzdem Danke!
 

Zurück
Oben