Regex: Alles ausser
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
abarbeiten
anweisung
bedingung
beschreiben
brauche
code
ergebnis
ersten durchgang
expression
http
klammern
negation
not
problem
programm
schlauch
string
url
zeichen
zweiten durchgang
-
Hallo zusammen,
Ich darf mich mal wieder mit Regex herumschlagen und komm grad nicht weiter...
Nun zu meinem Problem:
Ich habe einen String z.B.
(brauche ich als Bedingungen ([]-Klammern) und Anweisungen ({}-Klammern) in einem Programm).abc [var:tmp>4?{setvar:tmp:6}:tmp = {getvar:tmp}] def
Nun brauche ich einen Regex, mit dem ich von innen nach aussen die Bedingungen abarbeiten kann, und anschliessend die Anweisungen. Dies wäre ja eigentlich kein Problem mit den beiden Regex:
und\[(var|item)[^\[\]]*\?[^\[\]]*:[^\[\]]*\]
\{(setvar|changevar|remi|givei|addi|resetv|getvar):.*\}
Nun soll aber die getvar-Anweisung mit den Bedingungen verarbeitet werden, und da steh ich auf dem Schlauch: wie kann ich beim ersten Regex machen, dass innerhalb der []-Klammern kein {getvar:.*} vorkommen kann? Dass keine []-Klammern innerhalb vorkommen, kann ja einfach mit [^\[\]] gelöst werden, aber wie löse ich das andere Problem?
Vielen Dank und Gruss
BePh19
Beitrag zuletzt geändert: 6.4.2013 15:08:27 von beph19 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie soll denn das Ergebnis sein? Ich verstehe nicht wirklich, was Du erreichen willst.
Habe mal geschaut, wie man ohne ein Pattern matchen kann, aber ich denke, Du wirst es mit mehreren Regexs einfacher lösen können.
Beschreib bitte erst einmal das gewünschte Ergebnis. -
Mit dem ersten Pattern soll im Beispiel
beim ersten Durchgang {getvar:tmp} gefunden werden. Dies wird dann ersetzt, und im zweiten Durchgang soll alles in den []-Klammern gefunden werden. Das {setvar:tmp:6} wird anschliessend mit dem 2. Pattern gefunden (das ist kein Problem).abc [var:tmp>4?{setvar:tmp:6}:tmp = {getvar:tmp}] def
Ich versuche mal, das Problem zur besseren Verständlichkeit anders zu beschreiben:
Wie kann man mit Regex eine Zeichenfolge finden, die z.B. mit 2 beginnt und mit 4 endet, die jedoch nicht die Zeichen a, d sowie nicht die Zeichenfolge bcbc beinhaltet. Ohne das "Zeichenfolgen-Problem" könnte man ja 2[^ad]4 verwenden, aber dann würde auch 2ccbcbc4 gefunden, was nicht erwünscht wäre. -
Hi,
beph19 schrieb:
mit negative lookahead. Für deine Frage sollte
Wie kann man mit Regex eine Zeichenfolge finden, die z.B. mit 2 beginnt und mit 4 endet, die jedoch nicht die Zeichen a, d sowie nicht die Zeichenfolge bcbc beinhaltet.
passen. Weitere Diskussion dazu findest du z.B. hier oder dort.2(?!.*bcbc|.*a|.*d).*4
Gruß -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage