Ich entwickle einen Algorithmus zum Parsen einer Zahl aus einer Reihe von kurzen Strings. Diese Strings sind etwas regulär, aber es gibt ein paar verschiedene allgemeine Formen und einige Ausnahmen. Ich versuche, eine Reihe von Regexes zu erstellen, die mit den verschiedenen Formen und Ausnahmen umgehen; Ich werde sie nacheinander anwenden, um zu sehen, ob ich ein Match bekomme.Eine optionale Teilzeichenfolge in einer Regex anpassen
Eine dieser Formen geht ungefähr so:
X (Y) Z
Wo:
- X ist eine Zahl, die ich aufnehmen möchten.
- Z ist statischer, vordefinierter Text. es ist im Grunde, wie ich feststelle, ob diese bestimmte Form anwendbar ist oder nicht.
- Y ist eine Zeichenfolge mit unbekannter Länge und Inhalt, umgeben von Klammern.
Auch: Y ist optional; es scheint nicht immer in einem String mit Z und X. Also, ich möchte von all diesen Strings, die Zahlen extrahieren können:
- 10 Z
- 20 (foo) Z
- 30 (bar) Z
Gerade jetzt, ich habe einen regulären Ausdruck, der die erste wird erfassen:
([0-9]+) +Z
Mein Problem ist, dass ich weiß nicht, wie zu konstruieren Eine Regex, die genau dann zu einer Reihe von Zeichen passt, wenn sie in runde Klammern eingeschlossen sind. Kann dies in einem einzigen Regex gemacht werden?
Die Räume sind statisch. Ersetzen Sie sie mit \ s + –
oder legen Sie eine davon in die()? –
Beachten Sie, dass, wenn die Regex \ n mit erfasst. oder wenn es mehrere Instanzen in einer Zeile gibt, sollte dies nicht gierig sein: (\ d *) (\ (. *? \))? Z – eyelidlessness