Sauf dans le cas d'une assertion de longueur nulle, les caractères de l'entrée seront toujours consommés dans la correspondance. Si vous êtes dans le cas où vous voulez capturer un certain caractère dans la chaîne d'entrée plus d'une fois, vous aurez besoin de l'assertion de longueur zéro dans la regex.
Il existe plusieurs assertions de longueur nulle (par ex. ^
(début de l'entrée/ligne), $
(fin de l'entrée/ligne), \b
(limite du mot)), mais des solutions de contournement ( (?<=)
un regard positif et (?=)
look-ahead positif) sont le seul moyen de capturer du texte se chevauchant à partir de l'entrée. Les look-arounds négatifs ( (?<!)
un regard négatif en arrière, (?!)
negative look-ahead) ne sont pas très utiles ici : si elles affirment vrai, alors la capture à l'intérieur a échoué ; si elles affirment faux, alors la correspondance échoue. Ces assertions sont de longueur zéro (comme mentionné précédemment), ce qui signifie qu'elles affirmeront sans consommer les caractères de la chaîne d'entrée. Elles correspondent à une chaîne vide si l'assertion est acceptée.
En appliquant les connaissances ci-dessus, une regex qui fonctionne pour votre cas serait :
(?=(\w\w))