Je suis en train de développer un algorithme pour analyser un nombre d'une série de chaînes courtes. Ces chaînes sont quelque peu régulières, mais il y a quelques formes générales différentes et plusieurs exceptions. J'essaye de construire un ensemble de regexes qui manipuleront les diverses formes et exceptions; Je vais les appliquer l'un après l'autre pour voir si je reçois un match.Correspondance d'une sous-chaîne optionnelle dans une expression rationnelle
L'une de ces formes est quelque chose comme ceci:
X (Y) Z
Où:
- X est un numéro que je veux saisir.
- Z est un texte statique prédéfini. c'est essentiellement comment je détermine si cette forme particulière est applicable ou non.
- Y est une chaîne de longueur et de contenu inconnus entourée de parenthèses.
Egalement: Y est facultatif; il ne semble pas toujours dans une chaîne avec Z et X. Donc, je veux être en mesure d'extraire les numéros de toutes ces chaînes:
- 10 Z
- 20 (foo) Z
- 30 (bar) Z
en ce moment, j'ai un regex qui captera la première:
([0-9]+) +Z
Mon problème est que je ne sais pas comment construire une regex qui va correspondre à une série de caractères si et seulement s'ils sont entre parenthèses. Cela peut-il être fait dans une seule regex?
Les espaces sont statiques. Remplacez-les par \ s + –
ou placez-en un à l'intérieur du()? –
Notez que si l'expression rationnelle capture \ n avec. ou s'il y a plusieurs instances sur une ligne, ceci devrait être non gourmand: (\ d *) (\ (. *? \))? Z – eyelidlessness