Mon objectif est de scinder une chaîne telle que, a|b||c|d
dans a
, b||c
et d
.
J'ai essayé d'utiliser plusieurs méthodes, mais j'ai fini par scinder ma chaîne:
Regarde derrière:
var_dump(preg_split("/\|(?<!\|\|)/", "a|b||c|d"));
array (size=4)
0 => string "a" (length=1)
1 => string "b" (length=1)
2 => string "|c" (length=2)
3 => string "d" (length=1)
Lookahead:
var_dump(preg_split("/(?!\|\|)\|/", "a|b||c|d"));
array (size=4)
0 => string "a" (length=1)
1 => string "b|" (length=2)
2 => string "c" (length=1)
3 => string "d" (length=1)
Comment puis-je ignorer les tubes doubles?
Réponses:
4 pour la réponse № 1Divisez simplement votre entrée en fonction de la regex ci-dessous, qui utilise des lookarounds négatifs.
(?<!|)|(?!|)
|
est un méta-caractère spécial dans regex qui agit comme un opérateur logique OU ou d’alternance. Pour correspondre à un littéral |
symbole, vous devez échapper à la |
dans votre regex comme |
1 pour la réponse № 2
Vous pouvez utiliser cette regex pour scinder:
(?<!|)|(?!|)