Reguläre Ausdrücke

G.Threepwood

Lt. Junior Grade
Registriert
Dez. 2007
Beiträge
258
Moin!

Ich hoffe, mir kann jemand weiter helfen...

Ich bin auf der Suche nach einem regulären Ausdruck, der es mir ermöglicht eine beliebige Zeichenfolge mit Ausnahme einiger expliziten Wörter zu finden.

Danke... G.Threepwood
 
Also die Frage ist: heißt explizites Wort, dass es ausreicht, wenn es Teil der Zeichenfolge ist, oder ist die gesamte Zeichenfolge dann das Wort?
 
Beispiel:

finden soll er z.B. den Ausdruck...

int zahl;
short int x;
float test;

Nicht finden darf er aber z.B....

class test;
return 0;
 
Bin ich der einzige, der das Beispiel in keiner Weise aussagekräftig findet?

Und ich frage mich, ob reguläre Ausdrücke hier überhaupt sinnvoll sind, oder ob es nicht gleich besser wäre, über den AST zu gehen... aber da vermutlich nicht mal die NSA weiß, um was es eigentlich geht, kann man diesbzgl keinen Rat geben.
 
Zuletzt bearbeitet:
Ich verstehe gerade auch nicht wirklich, was hier gemeint ist.
Was genau soll gefunden werden? Einer der drei Ausdrücke, oder genau diese drei Zeilen in Folge?
Was genau soll NICHT gefunden werden? Einer der zwei Ausdrücke, oder genau diese zwei Zeilen in Folge?
Bitte beherzige Punkt eins deiner Signatur... :rolleyes:

Mfg Kae
 
Du solltest deine Matching-Logik umdrehen, und einen Ausdruck verwerfen, wenn ein bestimmtes Token gefunden wird. Dann sparst du dir doch diese ganze Invertierung.

Andernfalls würde ein Ausdruck wie dieser hier funktionieren (bezugnehmend auf deine 2 Beispiele "class etst" und "return 0"):

Code:
import java.util.regex.Pattern;

public class X {

	public static void main(String[] args) {

		String pattern = "\\Z*(?!return 0|class test).*";
		System.out.println(Pattern.matches(pattern, "return 0" ));
	}

}
Output: false

Schön finde ich das aber nicht gerade.
 
Vielleicht ist es auch deshalb nicht schön, weil schlicht Beispiele in einen Regex gepackt wurden und keiner versteht, warum die einen Beispiele gehen sollen und die anderen nicht usw...
 
Ergibt in der Tat wenig Sinn, stimme dir zu.
Habe noch nichtmal verstanden was überhaupt hinten dran hängt.
 
Der TE will wohl irgendwie Programmcode parsen. Mir ist aber auch nicht ganz klar, was das soll.

Vielleicht einfach ein Buch zu Compilerbau lesen? Im Kapitel Lexer / Tokenizer steht das dann drin.
 
mib hat ja schon AST angesprochen. In die Richtung, dass etwas semantisches als Frage dahinter steht hab ich auch schon gedacht.. aber so gibts ja wirklich nur wilde Vermutungen..
 
Zurück
Oben