Ich möchte in einem beliebigen string alle Vorkommen dieses Patterns matchen: ([0-9]\.[0-9]\.[0-9]) außer wenn es mit 1.2 anfängt. Das Stichwort ist wohl negative-lookahead, aber ich bekomme es im Regexbuilder nicht zusammen. Beispiel: <Tag Id1="1.1.1-text" Id2="1.1.2-text" Id3="1.2.3-text" /> soll dann 1.1.1 und 1.1.2 matchen, aber nicht 1.2.3 wie ist die korrekte Syntax dafür? Ich habe nicht die Möglichkeit programmatisch einzugreifen im Sinne von "filter die Matches hinterher händisch aus"
:
Bearbeitet durch User
Kannst du auch nicht zwei Regex hintereinander anwenden? Ansonsten vielleicht in die Richtung
1 | ([0-9]\.[013-9]\.[0-9])|([02-9]\.[0-9]\.[0-9]) |
Beitrag #7552272 wurde vom Autor gelöscht.
Das hier scheint zu tun: (?!1\.2)([0-9]\.[0-9]\.[0-9]) https://regex101.com/r/MLPYW5/1 Ich habe nur noch nicht 100% verstanden warum, muss mir das mit lookahead / lookbehind nochmal ansehen.
In eckigen Klammern bedeutet doch Einzeichenmuster. Müßte das nicht auch gehen ?
1 | ([0-9]\.[013456789]\.[0-9]) |
Heinz B. schrieb: > Müßte das nicht auch gehen ? > ([0-9]\.[013456789]\.[0-9]) Das würde fehlschlagen, wenn es z.B. mit 3.2 anfängt. Der Freundliche Gast X. schrieb: > https://regex101.com/r/MLPYW5/1 > > Ich habe nur noch nicht 100% verstanden warum, muss mir das mit > lookahead / lookbehind nochmal ansehen. Soweit ich https://www.regular-expressions.info/lookaround.html entnehmen kann, ist das eigentlich ein negativer Lookahead. Es wird alles gematcht, das aus "nichts, nicht gefolgt von 1.2" und das dann gefolgt von drei durch Punkten getrennten Ziffern besteht.
:
Bearbeitet durch User
hab ich doch zu kurz gedacht.
Wie sieht es mit
1 | (([02-9]\.[0-9])|([0-9]\.[013-9]))\.[0-9]) |
aus ?
wenn es immer genügend zeichen davor gibt, dann kannst Du mit NICHT 1 und NICHT 2 anfangen. Also * alles außer 1 * beliebiges Zeichen (bzw. "\.") * alles außer 2 ... Für die Gruppe ist das nicht schlimm, die bestimmst Du ja mit Klammern (oder sonstwie)
Flunder schrieb: > Wie sieht es mit >
1 | (([02-9]\.[0-9])|([0-9]\.[013-9]))\.[0-9]) |
> aus ? Nope: https://regex101.com/r/zn820K/1
Tolle Seite um Regex auszuprobieren. Wenn Du das Zeilenendezeichen hinter dem Regex entfernst, funktioniert es besser.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.