Regulärer Ausdruck

Hi,

also ich muss folgenden Ausdruck (Matlab Code) in einem String entfernen:

Java:
if isempty(var)
*
end

Momentan sieht mein Ausdruck so aus:
Java:
String regex = "if\\sisempty\\("+ s +"\\)\\s.*[\\s]??end";
string = string.replaceFirst(regex, "");

Der Ausdruck muss dabei nicht-gierig sein, da auch die ganze Datei mit einem end aufhört.

Ich finde leider in keinem Tutorial eine Angabe wie ich normale Zeichenfolgen angebe. [ab] bedeutet ja zB a oder b. Ich habe den Code mittlerweile auch hundert mal verändert. Entweder matched der Ausdruck einfach nicht oder ich bekomme in der zweiten Zeile des Codes eine Endlosschleife (oder es dauert einfach nur 10min den Ausdruck zu ersetzen..). Wieso weiß ich nicht. Muss ich eventuell durch Backslashes noch deklarieren welcher Teil des Strings auch wirklich ein regulärer Ausdruck ist ähnlich wie bei PHP?
 
S

SlaterB

Gast
was du machen solltest ist weniger machen,
fange mit einem String "i" an, versuche den zu machten, klappt? dann als nächstes "if", dann Leerzeichen, mehrere Wörter usw.,
nicht alles auf einmal und dann nichts mehr verstehen..,

wenn du an einen bestimmten Punkt angelangst, an dem etwas nicht geht,
dann beschreibe die Situation genau, was geht noch, was geht nicht mehr?

hast du übrigens Zeilenumbrüche in dem String? das ist wieder ein Schritt Komplexität für sich

welchen Zweck haben die zwei ?? hintereinander im Ausdruck?

> Ich finde leider in keinem Tutorial eine Angabe wie ich normale Zeichenfolgen angebe.
ganz normal ohne irgendetwas, hast du ja auch schon mit if am Anfang usw.
 
Hi,

ja das Problem scheinen die Zeilenumbrüche zu sein.

Java:
String s = "w";
String oldS = "if isempty(" + s + ") code end";
System.out.println(oldS);
String regex = "if\\sisempty\\("+ s +"\\).*end";
String newS = oldS.replaceFirst(regex, "ersetzt");
System.out.println(newS);

Das hier funktioniert nämlich. Zwischen der Bedingung und dem end kann natürlich belieber Code stehen und deshalb auch Zeilenumbrüche. Ich bin davon ausgegangen, dass die durch * abgedeckt werden, da das ja ein beliebiges Zeichen ist.

edit: und das zweite ? steht für den nicht-gierigen Operator.
 
S

SlaterB

Gast
hier schonmal ein Beispiel
Java:
public class Test
{
    public static void main(String[] args)
    {
        String oldS = "a\nb";
        System.out.println(oldS);
        Pattern p = Pattern.compile("a\\nb", Pattern.MULTILINE);
        Matcher m = p.matcher(oldS);
        String newS = m.replaceFirst("ersetzt");
        System.out.println("neu: " + newS);
    }
}
für Zeilenumbruch gibts vielleicht eine Zeichengruppe, .* half bei mir bisher nicht
 
Hi,

mit
Java:
String s = "w";
String oldS = "if isempty(" + s + ")\r\ncode\n\r\n\nend hallo end";
System.out.println(oldS);
String regex = "if\\sisempty\\("+ s +"\\)(.|\\s)*?end";
String newS = oldS.replaceFirst(regex, "ersetzt");
System.out.println(newS);

funktioniert es jetzt. Gruppiert man eine Zeichengruppe nicht eigentlich mit eckigen Klammern? Ich hätte jetzt (.|\\s)*? so geschrieben: [.\\s]*? Das hat aber nicht funktioniert.
 
S

SlaterB

Gast
Pattern.DOT_ALL wäre noch das Flag was ich eigentlich suchte, dann ist der Zeilenumbruch bei .* mit drin
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
W Regulärer Ausdruck für 0 oder mehr Blanks Allgemeine Java-Themen 8
M Regulärer Ausdruck Allgemeine Java-Themen 3
R Regulärer Ausdruck Allgemeine Java-Themen 5
G Regulärer Ausdruck für 2 Wörter Allgemeine Java-Themen 3
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
H Problem mit der Klasse Pattern - Regulärer Ausdruck Allgemeine Java-Themen 2
S Regulärer Ausdruck tut überhaupt nichts Allgemeine Java-Themen 2
Iron Monkey Regulärer Ausdruck Allgemeine Java-Themen 2
T Regulärer Ausdruck Allgemeine Java-Themen 6
S Regulärer Ausdruck für HTML-Tag Allgemeine Java-Themen 18
P [Regulärer Ausdruck] Auf Gruppe mit Quantifier separat zugreifen? Allgemeine Java-Themen 2
J Regulärer Ausdruck - Der Punkt und der Zeilenumbruch Allgemeine Java-Themen 6
Iron Monkey Regulärer Ausdruck Allgemeine Java-Themen 6
A Regulärer Ausdruck für die Uhrzeit Allgemeine Java-Themen 3
G Regulärer Ausdruck Allgemeine Java-Themen 4
M Regulärer Ausdruck Allgemeine Java-Themen 3
P Regulärer Ausdruck um sich wiederholende Zeichen zu finden. Allgemeine Java-Themen 9
M Regulärer Ausdruck mit [ und ] Allgemeine Java-Themen 9
P Problem - Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 5
J Regulärer Ausdruck Allgemeine Java-Themen 3
N Regulärer Ausdruck Allgemeine Java-Themen 2
M Regulärer Ausdruck Allgemeine Java-Themen 2
B regulärer ausdruck Allgemeine Java-Themen 9
T Einfacher regulärer Ausdruck Allgemeine Java-Themen 2
A Regulärer Ausdruck EMail-Prüfung Allgemeine Java-Themen 3
N Regulärer Ausdruck Allgemeine Java-Themen 2
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
G JavaFX var Ausdruck Allgemeine Java-Themen 1
S Hex Ausdruck kürzen Allgemeine Java-Themen 34
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
L Erste Schritte Ausdruck schöner schreiben? Allgemeine Java-Themen 8
J Frage zu regulärem Ausdruck Allgemeine Java-Themen 2
H Reg Exp Ausdruck erweitern Allgemeine Java-Themen 2
A Bestimmte Sonderzeichen im Regulären Ausdruck Allgemeine Java-Themen 2
B Problem mit Regulärem Ausdruck Allgemeine Java-Themen 4
J RegEx Ausdruck Allgemeine Java-Themen 2
G RegEx- Ausdruck Allgemeine Java-Themen 4
L String Replace mit Regulärem Ausdruck Allgemeine Java-Themen 2
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
T Ausdruck mit pdfBox macht Probleme Allgemeine Java-Themen 2
M Ausgabe in Datei zum Ausdruck Allgemeine Java-Themen 2
F Problem mit regulären Ausdruck in Zusammenhang mit HTML Allgemeine Java-Themen 8
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
M Wertepaar in relulärem Ausdruck Allgemeine Java-Themen 15
A Regulären Ausdruck für Funktionsnamen Allgemeine Java-Themen 4
M Regulären Ausdruck negieren Allgemeine Java-Themen 6
G Frage zu Regulärem Ausdruck Allgemeine Java-Themen 2
S regex-Pattern Ausdruck negieren Allgemeine Java-Themen 2
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
I Composite Pattern für Ausgabe von Ausdruck Allgemeine Java-Themen 3
X problem mit regulären ausdruck Allgemeine Java-Themen 3
F Problem mit regulärem Ausdruck Allgemeine Java-Themen 6
M backreference im regulären ausdruck Allgemeine Java-Themen 9
A Probleme Umwandlung Ausdruck String in double Allgemeine Java-Themen 4
P Dateinamen mit regulärem Ausdruck testen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben