Sous-masques
Les sous-masques sont délimités par des parenthèses,
et peuvent être imbriquées. Ajouter des sous-masques a deux
utilités :
1. Délimiter des alternatives. Par exemple, le masque
char(don|mant|)
acceptera les mots
"
char
", "
charmant
", ou
"
charmant
". Sans les parenthèses, il
n'accepterait que "
chardon
",
"
mant
" ou la chaîne vide "".
2. Le sous-masque est considéré comme capturant : lorsqu'une
chaîne sujet est acceptée par le masque complet, les
sous-masques sont transmis à l'appelant grâce à
un vecteur de sous-masques. Les parenthèses ouvrantes sont
comptées de gauche à droite, (commençant à 1).
Par exemple, soit la chaîne sujet "
le roi soleil
"
qui est utilisée avec le masque suivant :
Le ((roi|prince) (soleil|charmant))
les sous-masques
capturé sont "
roi soleil
", "
roi
",
et "
soleil
", numérotés respectivement 1, 2, et 3.
L'ubiquité des parenthèses n'est pas toujours simple
d'emploi. Il y a des moments où regrouper des sous-masques
est nécessaire, sans pour autant capturer la valeur trouvée.
Si une parenthèse ouvrante est suivie de "
?:
",
le sous-masque ne capture pas la chaîne assortie, et ne sera pas
compté lors de la numérotation des captures. Par exemple,
avec la chaîne "
le prince charmant
", utilisé
avec le masque
Le (( ?roi|prince) (soleil|charmant))
les chaînes capturées seront "
prince charmant
"
et "
charmant
", numérotés respectivement 1
et 2.
Le nombre maximal de chaîne capturées est de 99, et le
nombre total de sous-masque (capturant ou non) ne doit pas
dépasser 200.
(?i:samedi|dimanche)
et
(?:(?i) samedi | dimanche)
: De plus, comme les
séquences d'options sont valables sur toute une alternative,
les masques ci-dessus accepteront aussi bien "DIMANCHE" que "Dimanche".
|