Probleme mit dem regulären Ausdruck

Sebastian29

Erfahrenes Mitglied
Hi!

Die Formel sieht so aus: =wenn(und(Status=S;AbrMerker=C);Fax01_GVL;)

Code:
bedingung = formel.toUpperCase().replaceAll( "=WENN([^.*])", "" );

Als Ergebnis möchte ich so haben: und(Status=S;AbrMerker=C);Fax01_GVL;

Zu diesem regulären Ausdruck wird trotzdem ")" am Ende der Formel nicht gelöscht! Warum nicht?

Was habe ich im Ausdruck noch vergessen?

Gruß
Sebastian29
 
Java:
String regex = "=wenn\\((.*)\\)";
String s = "=wenn(und(Status=S;AbrMerker=C);Fax01_GVL;)";
Matcher m = Pattern.compile(regex).matcher(s); 

m.find();
	  
System.out.println(m.group(1)); //und(Status=S;AbrMerker=C);Fax01_GVL;

replace funktioniert wohl nicht mit Backreferencing, deshalb hab' ich einen Matcher benutzt.
 
Hi Jim!

Super, besten Dank! Zwei Fragen noch: Woher weiss ich, dass mein gesuchtes Ergebnis in Gruppe 1 liegt? Kann es auch vorkommen, dass es in m.group(2); liegt?

Gruß
Sebastian
 
Und so kannst du das Pattern wiederbenutzen wenn du öfter was matchen willst und hast auch groß und klein geschriebene "WENN" dabei:
Java:
String formel = "=wenn(und(Status=S;AbrMerker=C);Fax01_GVL;)";
		Pattern p = Pattern.compile("=(?:WENN|wenn)\\((.*)\\)");
		Matcher m = p.matcher(formel);
		boolean b = m.matches( );
		if (b) {
			System.out.println(m.group(1));
		}
 
Zurück