Regulärer Ausdruck

Hallo zusammen,

ich möchte einen String mittels der Methode match(regulärer Ausdruck) auf das Vorhandensein von bestimmten Trennzeichen prüfen. Die Stelle an der ich Schwierigkeiten hab sieht wie folgt aus:

… (123)Zeichenkette1 // Zeichenkette2 * …

ich will jetzt prüfen, ob zwischen den Trennern „)“ und „//“ in der Zeichenkette1 unerwünschterweise irgendwo nochmal „//“ vorkommt. (Wenn ja, dann wäre der String für mich nicht passend)

Ich habs so gemacht: … \)[^/]*/{2} … jetzt ist ein einfacher „/“ aber auch verboten.

Wie geht denn das? Geht’s überhaupt?

Hallo,

… (123)Zeichenkette1 // Zeichenkette2 * …

ich will jetzt prüfen, ob zwischen den Trennern „)“ und „//“
in der Zeichenkette1 unerwünschterweise irgendwo nochmal „//“
vorkommt.
Ich habs so gemacht: … \)[^/]*/{2} … jetzt ist ein
einfacher „/“ aber auch verboten.

\\).\*?/{2}

sollte passen.

Gruß
Heavy

Hallo,

wenn ichs so mache

\).*?/{2}

dann ist auch „)Zeichen//kette1 //“ erlaubt. Ich möchte aber genau das vermeiden - also nur so Strings wie
„)Zeichen/kette1 //“
„)Zeichen/ket/te1 //“
„)Zeichenkette1 //“
sollen gültig sein.

Hallo,

… (123)Zeichenkette1 // Zeichenkette2 * …

ich will jetzt prüfen, ob zwischen den Trennern „)“ und „//“
in der Zeichenkette1 unerwünschterweise irgendwo nochmal „//“
vorkommt. (Wenn ja, dann wäre der String für mich nicht
passend)

Ich denke, dass sich deine Anforderung nicht so ohne Weiteres erfüllen lässt.
Schließlich ist „)“ für dich der Beginn der Zeichenkette1 und „//“ das Ende. Wie soll dann die Zeichenkette1 jemals ein „//“ enthalten können?
Das kann doch nicht funktionieren. Oder sehe ich das falsch?
Ansonsten müsste ja „//Zeichenkette2“ als Ende angesehen werden. Aber ich gehe davon aus, dass du Zeichenkette2 eben auch nicht kennst.

Vielleicht kannst du dein Ziel etwas genauer schildern?!
Ciao, Bill

Schließlich ist „)“ für dich der Beginn der Zeichenkette1 und
„//“ das Ende. Wie soll dann die Zeichenkette1 jemals ein „//“
enthalten können?

Vielleicht kannst du dein Ziel etwas genauer schildern?!

Ja, ist verzwickt - ich versuchs gern nochmal:

„)“ ist der Anfang und „//“ das Ende.
Dazwischen soll alles erlaubt sein AUSSER „//“
Was davor, bzw. danach kommt ist unbekannter Text.

Der ganze String sieht so aus:
99999/ beliebige Zeichen1 ( beliebige Zeichen2 ) beliebige Zeichen3 // beliebige Zeichen4 * 00:00 * beliebige Zeichen5

Ich muss nun immer die „beliebige Zeichen“ extrahieren. Die Klammern, der / und // sowie * sind die Trennzeichen. Darum will ich zuerst den ganzen String auf „richtige Trennung“ prüfen bevor ich das Zerlegen beginne:
Ich geht dabei von links nach rechts vor.

  1. 99999/ -> die ersten 5 Zeichen
  2. beliebige Zeichen1 ( -> String bis zur „(“ - der darf also keine „(“ enthalten, das hab ich hin bekommen
  3. beliebige Zeichen3 // -> String bis zu „//“ - da ist mein Problem, der String darf kein „//“ vor dem Trenner „//“ enthalten.

Jetzt bin ich selber verwirrt :wink:

  1. beliebige Zeichen3 // -> String bis zu „//“ - da ist
    mein Problem, der String darf kein „//“ vor dem Trenner „//“
    enthalten.

Jetzt bin ich selber verwirrt :wink:

Eben. Per Definition dürfen die Trennzeichen nicht in dem beliebigen String davor vorkommen, denn sonst wird dies ja als Trennzeichen interpretiert.
Einzige Möglichkeit die ich noch sehe:
Als Trennzeichen gilt das letzte // in einer Zeile. Somit könntest du die ersten evtl. vorkommenden ignorieren. Aber was ist, wenn nach dem gewünschten Trenner auch wieder ein // kommt. Dann würde dieses ja fälschlicherweise als Trenner interpretiert.

Ist dieses Problem also nicht besser lösbar, wenn
a) ein anderes Trennzeichen verwendet wird
oder b) per Definition die mehrfache Verwendung des Trennzeichens verboten wird
?!

Ciao, Bill

Ist dieses Problem also nicht besser lösbar, wenn
a) ein anderes Trennzeichen verwendet wird
oder b) per Definition die mehrfache Verwendung des
Trennzeichens verboten wird
?!

Tja, so wäre mir das auch am liebsten, leider muss ich auf das bestehende System aufsetzen, eine Änderung kommt nicht in Frage (zumindest nicht in absehbarer Zeit).
Dann muss ich halt doch darauf vertrauen, dass die Trennzeichen richtig sind und einfach an den Vorhandenen zerlegen.

Danke an alle die sich mit dem ausichtslosen Thema beschäftigt haben!
Ingo