0
votes

Comment écrire une regex qui correspond à l'un des modèles multiples?

est-il possible de construire une regex pour un ensemble de chaînes qui correspondra à la motion 1 ou au motif 2 où les deux motifs ont le même nombre de groupes de capture?

J'ai besoin de récupérer des segments de chaîne en indexation dans la matrice de Les groupes de capture indépendants de savoir si la chaîne correspondait à la motion 1 ou 2. xxx

donc chaque motif a 4 groupes. Les groupes 1,2,4 sont identiques. Le groupe 3 est manquant du motif 1.

Je veux indexer tout résultat (modèle 1 ou 2) sur toute la gamme d'index de groupe (1,2,3,4). < / p>


1 commentaires

Pouvez-vous donner un exemple?


3 Réponses :


0
votes

Je suppose que vous souhaitez concevoir cette expression: xxx

L'expression est expliquée sur le panneau supérieur droit de REGEX101.COM , si vous souhaitez explorer / simplifier / le modifier / le modifier, et dans Ce lien , vous pouvez regarder comment cela correspondrait à certains échantillons d'intrants, si vous le souhaitez.

circuit de regex

JEX.IM visualise des expressions régulières:

 Entrez la description de l'image ici


0 commentaires

0
votes

Avec cette regex, tous les groupes sont présents et éventuellement vides: xxx

Demo


0 commentaires

0
votes

Votre regex doit correspondre aux deux modèles donnés. Les réponses fournies combinent les deux modèles en un. Mais ils manquent de vérifier si l'un des motifs est réellement correct.

Alors j'ai ajouté le lookahead: xxx

ceci affirme que l'un des deux motifs correspond à l'un des deux motifs correspondant et Ensuite, correspond à la version combinée.

Sans le lookahead, la regex correspondrait xxx

notez la partie ((?: \ d {10})?) , ce wwill Assurez-vous que le groupe 3ème capture sera égalé, même si c'est vide.


2 commentaires

Quel est le but du regard positif? semble fonctionner bien sans elle


@Baltostar J'ai édité la réponse et j'ai fourni un exemple