Recadrage des caractères de délimitation, nous obtenons \|(?=\w=>)
|
est un caractère spécial dans regex, il devrait donc être échappé avec une barre oblique inverse comme \|
(?=REGEX)
est la syntaxe pour un look positif avant: matchs seulement si REGEX
correspond, mais ne consomme pas la sous-chaîne correspondant REGEX
. Le match jusqu'au REGEX
ne fait pas partie du jeu de résultats correspondant. S'il avait été simple \|\w=>
, la chaîne parentale serait divisée autour de |a=>
au lieu de |
.
Ainsi /\|(?=\w=>)/
correspond uniquement aux |
caractères qui sont suivies par \w=>
. Il correspond à |a=>
mais pas |a>
, ||
etc.
Tenir compte de la chaîne exemple de la question liée: a=>aa|b=>b||b|c=>cc
. Si ce n'était pas pour le lookahead, split donnera un tableau de [a=>aa, b||b, cc]
. Avec lookahead, vous obtiendrez [a=>aa, b=>b||b, c=>cc]
, qui est la sortie désirée.