J'ai un problème simple, mais je suis incapable de résoudre ce problème. Soit ma chaîne a un format ID: dddd
, avec l'expression régulière suivante:aux prises avec des expressions régulières conditionnelles
/^ID: ([a-z0-9]*)$/
ou comme suit: ID: 1234 Status: 232
, donc avec l'expression régulière suivante:
/^ID: ([a-z0-9]*) Status: ([a-z0-9]*)$/
Maintenant, je veux faire une expression régulière qui peut gérer les deux. La première chose que je suis venu avec était le suivant:
/^ID: ([a-z0-9]*)$|^ID: ([a-z0-9]*) Status: ([a-z0-9]*)$/
Il correspond, mais je cherchais dans les expressions régulières conditionnelles, et pensait que quelque chose devrait être possible le long des lignes de (pseudo-codish)
if the string contains /Status:/
/^ID: ([a-z0-9]*)$/
else
/^ID: ([a-z0-9]*) Status: ([a-z0-9]*)$/
seulement, je ne peux pas l'exprimer correctement. Je pensais que je devrais utiliser /?=/
mais je n'ai aucune idée de comment. Quelque chose comme
/((?=Status)^ID: ([a-z0-9]*) Status: ([a-z0-9]*)$|^ID: ([a-z0-9]*)$/
mais cela ne fonctionne pas.
Pouvez-vous m'aider?
Votre dernier exemple n'est pas une expression régulière valide. Il a une parenthèse ouverte trop. –
L'ID contient-il toujours quatre caractères alphanumériques? Si oui, pourquoi écrivez '*' au lieu de '{4}'? Pourrait-il y avoir des majuscules et des minuscules? –
C'était juste un exemple. Le nombre de chiffres n'est pas connu à l'avance. – nathanvda