FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV 2024
→
Fonctionnement des RegEx
Fonctionnement des RegEx
Débuté par Gilles, 24 jan. 2015 19:06 - 1 réponse
Connectez-vous…
Gilles
#1
Membre enregistré
160 messages
Popularité : +1 (3 votes)
Posté le 24 janvier 2015 - 19:06
Bonjour,
Le champ Texte2 contient
<
div
>
<
font Style
=
"Font: 11px Verdana; color:#000000;"
>
Ceci est
<
/
font
>
<
font Style
=
"Font: 11px @Batang; color:#000000;"
>
un
<
/
font
>
<
font Style
=
"Font: 11px Verdana; color:#000000;"
>
test.
<
br
/
>
<
/
font
>
<
/
div
>
Le code de mon bouton
LOCAL
s
Tmp est une
chaîne
tResA
,
tResB sont des
tableaux
dynamiques
s
RegExp est une
chaîne
=
".*(Font: [0-9]*px [ ,@,a-z,A-Z]*;).*"
tResA
=
allouer
un
tableau de
0
chaînes
tResB
=
allouer
un
tableau de
0
chaînes
//Texte2 = RTFVersHTML(Texte1)
SI
VérifieExpressionRégulière
(
Texte2
,
s
RegExp
,
tResA
)
ALORS
Info
(
tResA
..
Occurrence
)
FIN
J'obtiens 1. J'ai lu que VérifieExpressionRégulière ne gère pas la non-greedy .*? Et cela semble être effectivement le cas.
A moins que sRegEx soit mal écrite. Ce serait un moindre mal.
Si tel n'est pas le cas, donc en greedy, je dois supprimer normalement les correspondances dans Texte2. J'ai pensé faire une boucle sur le VérifieExpressionRégulière en supposant que l'opérateur .*, comme c'est normalement la règle, cherche à maximiser son impact, c'est à dire que s'il a le choix entre deux correspondances, il propose la plus longue, celle qui contient le plus de caractères.
Or il semble proposer systématiquement la dernière rencontrée.
<
div
>
<
font Style
=
"Font: 11px Arial; color:#000000;"
>
Test
<
/
font
>
<
font Style
=
"Font: 11px Arial Black; color:#000000;"
>
N° 1
<
br
/
>
<
/
font
>
<
/
div
>
Renvoie : Font: 11px Arial Black;
<
div
>
<
font Style
=
"Font: 11px Arial Black; color:#000000;"
>
Test
<
/
font
>
<
font Style
=
"Font: 11px Arial; color:#000000;"
>
N° 1
<
br
/
>
<
/
font
>
<
/
div
>
Renvoie : Font: 11px Arial;
Ce n'est pas grave dans mon cas car si je supprime "Font: 11px Arial;", il n'y a pas d'impact sur un "Font: 11px Arial Black;" grâce à la présence du ";"
Mais j'aimerais comprendre un peu mieux le fonctionnement de Windev. Je bugge ou c'est "particulier" à Windev ?
>Cordialement. Gilles
Signaler
0
0
Jurassic Pork
#2
Membre enregistré
962 messages
Popularité : +183 (185 votes)
Posté le 25 janvier 2015 - 00:52
hello,
tout le problème vient du fait que VérifieExpressionRégulière ne connaît pas la recherche globale.
Avec windev pour travailler avec les expressions régulières on peut utiliser l'objet automation vbscript.regexp.
Voici un exemple qui va chercher toutes les polices dans la chaîne que tu as proposée :
MonFiltre est une
chaîne
MonRegexp est un
objet automation
"vbscript.regexp"
objMatches est un
objet automation
dynamique
MaChaineATester est une
chaîne
=
"<div><font Style="
"Font: 11px Verdana; color:#000000;"
">Ceci est </font><font Style="
"Font: 11px @Batang; color:#000000;"
">un</font><font Style="
"Font: 11px Verdana; color:#000000;"
"> test.<br /></font></div>"
MonFiltre
=
"Font: [0-9]*px [ ,@,a-z,A-Z]*;"
MonRegexp
>
>
GLOBAL
=
Vrai
// on cherche toutes les occurrences
// on recherche les motifs qui sont sous la forme du Filtre
MonRegexp
>
>
Pattern
=
MonFiltre
objMatches
=
MonRegexp
>
>
Execute
(
MaChaineATester
)
// on recherche tous les motifs
SI
objMatches
>
>
Count
=
0
ALORS
Info
(
"pas de police trouvée "
)
SINON
POUR y
=
0
_A_ objMatches
>
>
Count
-
1
Trace
(
" Police "
+
y
+
" : "
+
objMatches
>
>
Item
(y)
>
>
value
)
FIN
FIN
--
>Ami calmant, J.P
Signaler
0
0
→ Revenir à WINDEV 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
WEBDEV (précédentes versions)
WINDEV Mobile (précédentes versions)
Etats & Requêtes
Hors-sujet
Outils
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte