Encore un domaine où j'ai beaucoup de lacunes.
Dans la lecture d'un fichier ligne a ligne, je voudrais pouvoir détecter si la ligne contient certains motifs tels que:
une suite de 3 # --> ###
une suite de 3 * --> ***
une suite de 3 + --> +++
une suite de 3 - --> ---
une suite de 3 = --> ===
une suite égale a - -
J'ai écris cette expression régulière qui fais bien le travail, mais je ne suis pas sur que ce soit la meilleure façon de faire.
Une âme charitable pourrait-elle me dire si j'ai bon ou s'il y a une meilleure façon de faire.
Merci d'avance.
cage
Voici la solution que j'ai trouvé dans ce bout de code
Code : Tout sélectionner
EnableExplicit
Define NewMap chaine.s(),N,texte$
chaine("1") = "Chaine1 : Tester si 3 *** dans la chaine."
chaine("2") = "Chaine2 : Tester si 3 ### dans la chaine."
chaine("3") = "Chaine3 : Tester si 3 === dans la chaine."
chaine("4") = "Chaine4 : Tester si 3 +++ dans la chaine."
chaine("5") = "Chaine5 : Tester si 3 --- dans la chaine."
chaine("6") = "Chaine6 : Tester si 3 - - dans la chaine."
chaine("7") = "Chaine7 : Cette chaine"
Define regex=CreateRegularExpression(#PB_Any, "([*]{3}|[#]{3}|[=]{3}|[-]{3}|[+]{3}|- -)")
For N=1 To 7
texte$=chaine(Str(N))
If regex
If ExamineRegularExpression(regex, texte$)
If NextRegularExpressionMatch(regex)
Debug texte$
Else
Debug chaine(Str(N))+" ne contient aucun des motifs."
EndIf
EndIf
Else
EndIf
Next
FreeRegularExpression(regex)