Les expressions réguliére

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lannoy
Messages : 59
Inscription : jeu. 09/juil./2009 13:31

Les expressions réguliére

Message par lannoy »

Bonjour a tous,

voila je voudrais utilisé les regex pour faire quelque modif sur le texte qui se trouve dans editorgadget

Alors en faite j'ai une liste de mot que je vais mettre dans un tableau et je voudrais que si un de ces mot se trouve dans le gadget editor
EditorGadget(#champ ,10,40,WindowWidth(1)-20,WindowHeight(1)-50)
Sa change sa couleur !
C'est possible ça ?
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

C'est pas sûr.
Modifier un texte pour lui ajouter des balises de style (HTML+CSS) se fait assez bien, mais je ne suis pas sûr que les RegEx soient suffisamment puissantes sous PB: elles ne vont pas te renvoyer les informations sur les groupes trouvés ce qui te permettrez de sélectionner la partie de texte en question puis de lui appliquer le style avec les SendMessage_(...).

Par contre y'a un format spécial (ou langage) pour mettre ne forme du texte dans les TextArea. Essaye de creuser de ce côté.
Ou plus simplement il doit y avoir les Libs Scientilla ou d'autres sur PureArea.net ou même sur ce forum qui répondront peut-être à tes besoins. Tout dépend si c'était un challenge ou si tu cherches une fonctionnalité toute faire.

/Liå
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
lannoy
Messages : 59
Inscription : jeu. 09/juil./2009 13:31

Message par lannoy »

Et bien j'aurais préférer le faire moi même, je c'est qu'il existe QT scintilla mais je c'est pas m'en servir
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Les expressions réguliére

Message par Backup »

....
Dernière modification par Backup le mar. 19/août/2014 12:21, modifié 1 fois.
lannoy
Messages : 59
Inscription : jeu. 09/juil./2009 13:31

Message par lannoy »

C'est super, tu a fait ça juste pour moi ?
Mais ça me dit pas si on peut comparé un texte complet avec un tableau et pas un seul mot, enfin je vais regarder ton code et essayé de comprendre
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

lannoy a écrit :C'est super, tu a fait ça juste pour moi ?
oui !

pour info je dispose chez moi d'une collection impressionnante de bout de code glané ça et la !
il me suffit de copier-coller

la recherche du bout de code est le plus long

le codage de ceci en utilisant le visual designer m'a pris un petit quart d'heure , alors que j'etais encore dans mon lit :) (avec mon NC10)
ma meuf c'est barré depuis longtemps :lol: :?
Mais ça me dit pas si on peut comparé un texte complet avec un tableau et pas un seul mot, enfin je vais regarder ton code et essayé de comprendre
il suffit de lire le contenu de ton tableau , element par element (mot par mot)
et de soumettre ce mot a rechercher au prg ! ;)
lannoy
Messages : 59
Inscription : jeu. 09/juil./2009 13:31

Message par lannoy »

Mais en faite je veut que si par exemple il ecrit dans la zone de texte
<?php

?>

c'est deux simbole se mette en bleu instantanément !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

lannoy a écrit :Mais en faite je veut que si il ecrit dans la zone de texte
<?php

?>

c'est deux simbole se mette en bleu instantanément !
si en purebasic se dit "IF" et lorsque tu veux verifier 2 conditions
tu met 2 conditions

if texte$="<?php"
color on ; tu met ici le code qui color
if texte$="?>"
color off ; tu met ici le code qui ne colore pas
endif
endif



je pense que tu as tout ce qu'il te faut pour faire ton prg :)


pour le probleme que tu souligne c'est encore plus simple que le prg que je t'ai mis !!

a savoir pour passer l'editeur en mode RTF
il faut lui envoyer cette chaine$
"{\rtf1\ansi "

et a la fin de l'editeur la derniere chose a lui envoyer c'est
"}"
donc tout ce qui est entre ces 2 balises c'est du RTF !! :)
sachant cela :

c'est simple
1- tu parcours toute les lignes de l'editeur
2 - lorsque tu rencontre "<?php" tu insere une des balises de coloration RTF
( couleur_rouge$="\cf4 " ; couleur_noir$=" \cf0 " ; couleur_noir$="\cf9")
voir le tableau des couleurs inclues dans mon code (procedure a Olivier)
puis tu insere le text a colorer , et ensuite tu insere la balise de fin de coloration (" \cf0") puis tu insere ta balise php ("?>") et le reste tu text !

3- tu recolle le tout dans l"éditeur
tu poursuis Goto 1-

fini !

voila en mettant comme ça par ecris ce qu'il te faut faire, ça peux aider

en tout cas tu as tout les outils pour le faire

un bon en php ne devrai pas avoir de soucis avec si peu ;)
lannoy
Messages : 59
Inscription : jeu. 09/juil./2009 13:31

Message par lannoy »

Je pige rien a ça

{\rtf1\ansi

Je comprend vraiment pas ce que tu veut dire pour moi j'ai compris ça

Si je fait ça sa marche :

Code : Tout sélectionner

if champ$="<?php"
color on RGB(2, 24, 253)
if champ="?>"
color on RGB(2, 24, 253)
endif
endif
Sa va par exemple donné sa

<?php
echo'J'ai compris ?';
?>
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

.....
Dernière modification par Backup le mar. 19/août/2014 12:21, modifié 2 fois.
lannoy
Messages : 59
Inscription : jeu. 09/juil./2009 13:31

Message par lannoy »

Ok c'est super, un peut comme les balise span et la posibilité d'utilisé RGB direct dans le html .

A je suis content je vais suivre ton conseil pour voir ça !
Et donc pour coloré <?php en bleu il me faut faire sa

If texte$="<?php"

SetGadgetText(#champ, "{\rtf1\ansi {\colortbl ;\red0\green0\blue255;} \cf1 <?php \cf0}")

EndIf

J'ai testé sa marche mais sa ecrit tout le temp en bleu ensuite, il y as pas une fonction str_replace ?? Pour construire un parser


J'ai tenté un truc, j'avais pas beaucoup d'espoire mais

Code : Tout sélectionner

texte$ = GetGadgetText(#champ)

If texte$ <> "" 

ReplaceRegularExpression(#champ, "<?php", "{\rtf1\ansi {\colortbl ;\red0\green0\blue255;} \cf1 <?php \cf0}")

SetGadgetText(#champ, texte$)

EndIf
Sa me donne une erreur des que je veut écrire dans le gadget .
Dernière modification par lannoy le dim. 12/juil./2009 13:49, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

........
Dernière modification par Backup le mar. 19/août/2014 12:22, modifié 1 fois.
lannoy
Messages : 59
Inscription : jeu. 09/juil./2009 13:31

Message par lannoy »

Ton code me permet pas de faire ce que je veut, j'ai vue qu'il marchais mais comment dire Si le texte contient sa tu colore CE mot de cette couleur
lannoy
Messages : 59
Inscription : jeu. 09/juil./2009 13:31

Message par lannoy »

Si je te suis, je suis sensée faire ça

Code : Tout sélectionner

  If CreateRegularExpression(0, "<?php")
    Result$ = ReplaceRegularExpression(0, "<?php", "{\rtf1\ansi {\colortbl ;\red0\green0\blue255;} \cf1 <?php \cf0 \colorb0}")
    Debug Result$ ; Will print "--- ABc --- abc"
  Else
    Debug RegularExpressionError()
  EndIf
Le blem est que sa marche pas :'


EDIT:

J'ai trouvé sa dans la doc

Debug ReplaceString("This is Art", " is", " was")

Ya pas moyen de faire un truc comme sa

Debug ReplaceString(texte$, " <?php", " {\rtf1\ansi {\colortbl ;\red0\green0\blue255;} \cf1 <?php \cf0 \colorb0}")


Parceque sa colore pas
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

..........
Dernière modification par Backup le sam. 01/oct./2011 12:44, modifié 1 fois.
Répondre