J'utilise rubular.com pour construire mon regex, et leur documentation décrit ce qui suit:
(...) Capture everything enclosed
(a|b) a or b
Comment utiliser une expression OR sans capturer son contenu? Par exemple, supposons que je souhaite capturer "ac" ou "bc". Je ne peux pas utiliser l'expression régulière
(a|b)(c)
droite? Depuis lors, je capture "a" ou "b" dans un groupe et "c" dans un autre, pas le même. Je sais que je peux filtrer à travers les résultats capturés, mais cela semble plus de travail ...
Est-ce que je manque quelque chose d'évident? J'utilise ceci en Java, si cela est pertinent.
Selon l’implémentation de l’expression régulière, vous pouvez utiliser ce que l’on appelle groupes non capturés avec la syntaxe (?:…)
:
((?:a|b)c)
Ici (?:a|b)
est un groupe mais vous ne pouvez pas référencer sa correspondance. Vous ne pouvez donc que faire référence à la correspondance de ((?:a|b)c)
c'est-à-dire ac
ou bc
.
Si votre implémentation en dispose, vous pouvez utiliser des parenthèses non capturables:
(?:a|b)
Même rubular ne vous oblige pas à utiliser des parenthèses et la priorité de |
est faible. Par exemple a | bc ne correspond pas à ccc