Regex pour diviser une chaîne uniquement par le dernier caractère d'espace
j'espère que ce devrait être un moyen rapide et simple, à l'aide de PHP, je suis en train de découper une chaîne en un tableau mais seulement de la dernière instance de l'espace. Jusqu'à présent j'ai...
$str="hello this is a space";
$arr=preg_split("/\s+/",$str);
print_r($arr);
Array ( [0] => hello [1] => this [2] => is [3] => a [4] => space )
...qui divise par toutes les instances d'espaces.
Comment puis-je développer cette expression régulière pour diviser par seule la dernière instance de l'espace? Pour devenir...
Array ( [0] => hello this is a [1] => space )
Vous remercions par avance de votre aide!
source d'informationauteur chattsm
Vous devez vous connecter pour publier un commentaire.
Essayer:
Modifier
Une courte explication:
La
(?= ... )
est positif regarder de l'avant. Par exemple,a(?=b)
ne correspondre à un seul'a'
si le caractère suivant (à droite) est un'b'
. Notez que le'b'
est pas une partie du match!La
\S
est juste un court de main pour la classe de personnage[^\s]
. En d'autres termes: il correspond à un seul caractère autre qu'un caractère espace blanc. Le+
après la*
fait le caractère de classe\S
possessif.Enfin, la
$
indique la fin de la chaîne.Pour résumer, l'ensemble de la regex
\s+(?=\S*+$)
serait de lire en anglais comme suit:Cela devrait fonctionner:
Vous pourriez le faire sans une regex:
ou
Si le
*
et+
après\S
dupicated? Seulement/\s+(?=\S+$)/
ou/\s+(?=\S*$)/
est assez dépend du besoin.