105 votes

Regex : Point d'interrogation et deux points

J'ai la regex Java suivante, que je n'ai pas écrite et que j'essaie de modifier :

^class-map(?:(\\s+match-all)|(\\s+match-any))?(\\s+[\\x21-\\x7e]{1,40})$
           ^                                 ^

C'est similaire à celui-ci .

Notez le premier point d'interrogation. Cela signifie-t-il que le groupe est facultatif ? Il y a déjà un point d'interrogation après le point d'interrogation correspondant ) . Les deux points ont-ils une signification particulière dans les regex ?

La regex compile bien, et il y a déjà des tests JUnit qui montrent comment elle fonctionne. C'est juste que je ne comprends pas bien pourquoi le premier point d'interrogation et les deux points sont là.

154voto

ryanp Points 1511

(?: commence un groupe de non-capture. Ce n'est pas différent de ( à moins que vous ne récupériez les groupes de la regex après utilisation. Voir Groupe non capturant ? .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X