Per regex string zwischen klammern raussuchen

StrikeTom

Bekanntes Mitglied
Wie suche ich per regex einen String zwischen zwei klammern raus?
Also so:
String irgeneinname = "2+(3-4)";
String irgeneinname2 = "3-4";
Ich verzweifle an der logik dazu😳
Kann mir jemand helfen?
Danke im voraus🙂
 
Java:
	public static String find(String s){
		Pattern p = Pattern.compile(".*\\((.*)\\).*");
		Matcher m = p.matcher(s);
		if(m.find()){
			return m.group(1);
		}
		return null;
	}
 
mal von deiner frage abgesehn. soll das ein parser für mathematische formeln werden?
ja🙂

DANKE😀😀😀

Doch irgend etwas funktioniert noch nicht so ganz:
Die funktion calc(String aufgabe) rechnet normal(ohne klammern) aus (+-*/%)
und so sieht die funktion calculate aus:
Java:
	public double calculate(String aufgabe)
	{
		String aufgaben = find(aufgabe);
		System.out.println(aufgaben);
		aufgabe.replace(aufgaben, "" + calc(aufgaben));
		return calc(aufgabe);
	}
Aber die klammern werden nicht rausgenommen.
Bitte um hilfe!
 
was in deinem Programm alles nicht funktioniert kann ich nicht beurteilen, aber replace ohne Zuweisung macht absolut gar nix,
Strings sind unveränderbar, leicht zu testen:

Java:
public class Test
{
    public static void main(String[] args)
    {
        String a = "aaa";
        System.out.println(a);
        a.replace("a", "b");
        System.out.println(a);
        a = a.replace("a", "b");
        System.out.println(a);
    }
}
 
'ich möchte es selber schreiben' klingt immer lustig im Zusammenhang mit Fragen im Forum, also wenn andere was machen sollen 😉

da noch keine richtige Reaktion kam:
hast du das mit replace nun nachvollzogen, ist noch eine Frage offen?
 
Schon durchgelesen(ich möchte es selber schreiben und nicht copy+paste(viel verstehe ich nicht))
Das ist viel mehr code als ich habe.

ok. die Einstellung prinzipiell ist schonmal lobenswert. Allerdings ist das imho wirklich die schönste Möglichkeit sowas zu realisieren. Was verstehst du denn daran nicht? Im Grunde ist die Logik recht einfach. Sieht komplizierter aus als es ist!
 
Wie suche ich per regex einen String zwischen zwei klammern raus?
Also so:
String irgeneinname = "2+(3-4)";
String irgeneinname2 = "3-4";
Ich verzweifle an der logik dazu😳
Kann mir jemand helfen?
Danke im voraus🙂

Schau dir mal das Thema LookAround-Assertion an. Das könnte dann in etwa so aussehen:
Java:
public static void sucheStringZwischen(String text, String anfang, String ende) {
//Bei Ausdrücken (text) mit mehreren Klammern muss noch eine Einschränkung bei .* getroffen werden
			Pattern p = Pattern.compile("(?<="+anfang+").*(?="+ende+")");
			Matcher m = p.matcher(text);
			while(m.find()) {
				System.out.println(m.group());
			}
	}

public static void main(String[] args) {
		sucheStringZwischen("2+(3-4)","\\(","\\)");
	}
Ausgabe:
Code:
3-4
 
Zuletzt bearbeitet:

Zurück
Oben