Y a-t-il une différence entre (\w+)?
et (\w*)
en regex?
C'est la même chose, non?
(\w+)?
et (\w*)
les deux correspondent (0 .. + inf caractères Word)
Cependant, il y a une légère différence:
Dans le premier cas, si cette partie de l'expression régulière correspond à ""
, le groupe de capture est absent. Dans le second cas, il est vide. Dans certaines langues, la première se manifeste sous la forme d'un null
tandis que la seconde doit toujours être ""
.
En Javascript, par exemple,
/(\w*)/.exec("") // ["", ""]
/(\w+)?/.exec("") // ["", undefined]
Dans PHP (preg_match
), dans le premier cas, la clé correspondante est simplement absente dans le tableau des correspondances: http://3v4l.org/DB6p3#v4