REGEX

Résolu
sebonoide Messages postés 8 Statut Membre -  
mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'aimerai savoir si c'est possible, dans le cadre d'un replace de rendre des parenthèses non capturante?

merci d'avance

7 réponses

mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   7 896
 
En admettant que le fichier soit bien formé (balises cohérentes) je ferais simplement deux replaces successifs :
- un premier qui transforme tous les [b]
- un second qui transforme tous les [/ b]

Non ?

Bonne chance
1
mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   7 896
 
Ca dépend de ce que tu utilises pour faire ton expression régulière il y a plusieurs syntaxe (vim, bash, pcre, perl...). Par exemple sous vim elles sont échappées et les parenthèses capturent si elles sont échappées \( \). En bash et en pcre tu peux essayer [(] et [)].

Bonne chance
0
sebonoide Messages postés 8 Statut Membre
 
J'utilise PCRE,
j'ai testé et comme je l'imaginai ça ne fonctionne pas.

En fait je ne veux pas les échapper seulement utiliser leur autre fonction.

En gros un si pas suivie de ça...

exemple:

/bon(?!jour)/

mais dans un replace


Une autre idée peut être?
0
mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   7 896
 
Désolée mais je n'ai pas compris. Donne moi un exemple de ce que tu veux catcher et un exemple de ce que tu ne veux pas catcher.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebonoide Messages postés 8 Statut Membre
 
une exemple de bbcode si tu veux

Prévisualisation en js

resultat.replace(/\[b\](.+)\[\/ b\]/gi, "<span style='font-weight:bold;'>$1</ span>");


Alors ça marche mais le soucis c'est quand tu as deux fois la même balise

exemple:

[b]kkk[/ b]
kkkkkkkkk
[b]kkk[/ b]


là il y as soucis puisque tu te retrouve avec:

kkk[/ b]
kkkkkkkkk
[b]kkk


Donc en fait je voudrais faire quelque chose comme çà:

resultat.replace(/\[b\](?!\[b\]\[\/ b\])*\[\/ b\]/gi, "<span style='font-weight:bold;'>$1</span>");


Pour qu'il n'agisse couple par couple de balise identique, mais bien sûr dans le cas d'un replace les parenthèses sont capturantes donc ça ne fonctionne pas...

Voilà j'espère que c'est assez clair
0
sebonoide Messages postés 8 Statut Membre
 
Ben oui tout simplement !!!

Je suis con c'est pas possible, faut toujours que je complique!

Bon en tout cas merci de ton aide!!!
0
mamiemando Messages postés 34209 Date d'inscription   Statut Modérateur Dernière intervention   7 896
 
De rien, et bonne continuation !
0