8792 sujets

Développement web côté serveur, CMS

Voilà, je cherche depuis des semaines (pas à temps plein bien sûr, mais j'y ai déjà passé des heures) une expression régulière pouvant cibler du texte entre deux lignes vides immédiatement suivies d'un crochet. Soit, en gros :
(un ligne vide{) n'importe quel texte (un ligne vide{)

Un exemple sera plus parlant. Pour le texte


{1111
111

{
2222
222


{3333
333
{4444
444

{

L'expression régulière doit nous créer quatre groupes contenants

{1111
111

{


{
2222
222


{


{3333
333
{4444
444

{


Vous me sauveriez la vie !
Modifié par lrbabe (26 Feb 2007 - 19:25)
Alsacréations n'est pas un forum pour les questions de pur php, mais je dirais quelque chose comme :
\{(.*?)\{
avec l'option s pour autoriser les lignes multiples avec le point.
le .*? il fait quoi au juste ?

Il vaut mieux que j'aille sur un forum spécialisé en effet parce que mine de rien cette question est des plus pointues.
Cela me semble être une bonne idée.
Tu trouveras une liste de ressources php ici. Smiley cligne

A tout hasard, je déplace quand même dansle salon approprié.
Pour répondre à ta deuxième question, le .*? indique une chaîne d'une longueur quelconque et contenant n'importe quels caractères, mais la plus courte possible pour satisfaire le motif. En enlevant le point d'interrogation, tu vas chercher la chaîne la plus longue possible permettant de satisfaire le motif.
QuentinC a écrit :
\{(.*?)\{
avec l'option s pour autoriser les lignes multiples avec le point.
On peut aussi écrire
\{[^{]*\{
qui est sans doute moins coûteux.