Pattern mit Pattern vergleichen

Daniel55

Mitglied
Hallo,

ich habe ein kleines Problem, bei dem ich nicht weiterkomme:

ich habe zwei Pattern:

1) RegEx: "/TestOrdner/*.txt"
2) RegEx: "/Tes*/*.txt"

nach meinem Verständnis impliziert das erst Pattern das zweite, also wenn das erste zutrifft, dann ist das zweite auch zutreffend. Lässt sich das in java nachprüfen, also das zweite Pattern auf das erst anwenden ?

Ich habe es schon mit Patter.match(pattern1, pattern2); ausprobiert, jedoch funktioniert dies nicht, offenbar weil der zweite Parameter ein String sein soll, in dem Ausdrücke wie z.B. * nicht als teile einer RegEx gewertet werden.

Hat jemand eine Idee ?

Danke im voraus, Daniel
 
Also Patterns vergleichen ist nicht möglich!

Was man dazu sagen kann ist, dass das 1. Pattern ein Subset des 2. Pattern liefert und ist.

Ich habe das Problem schon mal auf StackOverflow gesehen und da hat es auch zu keinem Ergebnis geführt.
 
Die regulären Ausdrücke sehen auf den ersten Blick falsch aus. Es müsste eigentlich "/TestOrdner/.+\\.txt" und "/Tes.*/.+\\.txt" lauten. Das ist zwar immer noch nicht korrekt, aber zumindest eine Verbesserung. Im Internet gibt es genug Beispiele wie Pfade mit RegEx validiert werden können. Gehen wir davon aus, dass du lediglich auf '.*' prüfen musst, dann kannst du matches verwenden.

Java:
	public static boolean match(String regex1, String regex2) {
		// TODO: Format prüfen ...
		if(regex1 == null || regex2 == null) {
			return false;
		}
		if(regex1.indexOf('/') == -1 || regex1.indexOf('/') == -1) {
			return false;
		}
		
		// TODO: Dateinamen prüfen ...
		
		// Dateinamen entfernen:
		regex1 = regex1.substring(0, regex2.lastIndexOf('/'));
		regex2 = regex2.substring(0, regex2.lastIndexOf('/'));

		// Prüfen, ob der regualäre Ausdruck mit dem ersten übereinstimmt:
		return regex1.matches(regex2); 
	}
 
Zuletzt bearbeitet:

Zurück
Oben