Regular Expressions



  • Irgendwie steh ich grad aufm Schlauch. Ich brauch ne RegEx mit der ich a) prüfen kann ob mein String valide ist und b) die Tokens rausholen kann.

    Bsp:
    Aus {foo 1}{bar1} soll ne Liste werden mit den Membern foo 1 und bar.
    Ich hab bis jetzt das: (\s*\{([\w+\s*])\}\s)* Ein Test auf http://www.fileformat.info/tool/regex.htm sagt, daß es matcht, abe nur bar kommt raus.



  • Das Prüfen auf Gültigkeit geht zwar mit einem regulären Ausdruck, aber du kannst damit nicht durch einen einzigen Match die Liste der Werte rausziehen. Das liegt daran, dass bei Wiederholung der Inhalt einer backreference immer wieder überschrieben wird. Das muss auch so sein, damit man backreferences referenzieren kann. Stell dir z.B. mal bei folgendem regex vor, was passieren würde, wenn backreferences dupliziert werden würden, wie du es gerne hättest: /(a)*(b)/
    Wenn man die b-Gruppe jetzt referenzieren wollte, muss man dann \2 schreiben oder \3 oder \4? Das hinge dann davon ab, wie oft (a) gematcht hat, und damit wären backreferences unbrauchbar.

    Siehe auch "Repetition and Backreferences" auf http://www.regular-expressions.info/brackets.html .



  • Och wie schade. Naja, Danke.


Anmelden zum Antworten