0 votes

preg_replace expression régulière pour trouver les nombres précédés de lettres

Je suis vraiment confus quant à l'utilisation preg_replace mais j'apprends lentement.

J'ai besoin d'aide avec la fonction :

$str= preg_replace('#\W\d+#', '\W \d+', $str);

L'idée est que je cherche des chiffres précédés de lettres sans espace,

c'est-à-dire abc123 . (PAS 'abc 123' et PAS '123abc')

et comment puis-je simplement inclure un espace ou un caractère entre les deux pour que abc123 devienne abc 123 ou abc@@123.

Merci à tous !

3voto

chaos Points 69029

Vous voulez

$str= preg_replace('#([A-Za-z]+)(\d+)#', '$1 $2', $str);

\W ne fait pas ce que vous pensez qu'il fait ; \w signifie "caractère du mot" et \W signifie " no mot caractère". Puisque vous voulez spécifiquement lettres Cependant, aucun des deux ne fait ce que vous voulez, et vous avez besoin [A-Za-z] qui est la classe de caractères correspondant à toutes les lettres. Vous avez également besoin d'un + après celui-ci afin de correspondre à "un ou plusieurs".

Les parenthèses permettent de "capturer" une partie de l'expression pour s'y référer ultérieurement ; $1 y $2 se référer à votre texte capturé entre parenthèses.

2voto

meder Points 81864
<?php

$str = 'abc()1234';
$str= preg_replace('#([a-zA-Z()])(\d+)#', '$1 $2', $str);

echo $str;

Sortie :

abc() 1234

$1 et $2 sont des rétro-références et font référence au premier et au second groupe capturé, respectivement. Plus d'informations @ http://www.regular-expressions.info/brackets.html .

0voto

unigg Points 279

Vous pouvez voir la différence entre /([A-Za-z])(\d+)/ y /([A-Za-z]+)(\d+)/ dans le testeur en ligne de l'expresseur PHP Regegular . Les deux fonctionnent avec preg_replace dans votre cas. Mais ce dernier fonctionne également avec preg_match_all, il est donc plus robuste.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X