J'ai besoin de savoir si une chaîne correspond à un certain nombre de critères différents. J'essaie de résoudre ceci en utilisant une expression régulière et ensuite voir si elle correspond (en Java: str.matches (myRegex);), mais je ne peux pas le faire correctement.Aide à la construction de regex
Les critères sont les suivants:
- La chaîne pour correspondre est constitué de 4 lettres, [AZ]
- Il peut être précédé (mais pas nécessairement) par l'un des "-", « + »ou "VC"
- Il doit seulement correspondre à des chaînes contenant exactement 4 lettres (et les caractères éventuellement) précédant
Exemples:
- "SHSN" -> Match
- "+ SHRA" -> Match
- "VCSHRA" -> Match
- "CAVOK" -> pas de match
- "- + SHSN" -> pas match
Est-ce possible de faire une seule regex? Ou devrait-il être fait dans le code ou une combinaison des deux?
Merci,
Linus
+1. Mais j'en ferais un groupe non-capturant s'il n'en a pas besoin pour capturer: '^ (?: [+ -] | VC)? [A-Z] {4} $' –
Excellent, merci! Je ne connais pas le terme «capturer des groupes», mais je vais le rechercher. – aspartame
@aspartame: Les correspondances des groupes non-captureurs ne peuvent pas être référencées. Donc vous ne pouvez pas utiliser 'group (1)' pour obtenir la correspondance de '(?: [+ -] | VC)?'. – Gumbo