Page 1 sur 1

[R] Quick reference et Regex ?

Posté : jeu. 16 juin 2016 16:21
par yohan8
Bonjour,

J'ai l'habitude d'utiliser regex101.com pour mettre en place mes patterns.
Aujourd'hui après que regex101 me confirme mon pattern mais que Autoit ne match rien du tout j'ai découvert qu'il éxistait des quick reference qui s'applique aux regex, du moins sur le site regex101.com.

https://regex101.com/r/dE8uJ1/146
https://regex101.com/r/dE8uJ1/143

J'ai installé la nouvelle version d'Autoit sur mon poste de travail, format portable.
Comment Autoit gère ces quick reference de Regex ?

[codeautoit]#include <array.au3>

$shablon_txt = FileRead("test.txt") ;voir les liens regex101 pour le contenu du texte

Dim $shablon_question[3] = ['RIJDEN\?', 'BESTUURDER', 'POSTCODE\)']
Dim $shablon_reponse[3]

For $i = 0 to 2
ConsoleWrite($shablon_question[$i]&@crlf)
$reponse = StringRegExp($shablon_txt, $shablon_question[$i]&'\s*(.+?)(?:\R+\d|\R*$)', 1)

if IsArray($reponse) Then
ConsoleWrite($reponse[0]&@crlf)
$shablon_reponse[$i] = $reponse[0]
Else
ConsoleWrite("no match : "&$reponse&@error&@extended&@crlf)
EndIf
Next

_ArrayDisplay($shablon_reponse)[/codeautoit]

Re: [..] des versions de Regex ?

Posté : jeu. 16 juin 2016 16:37
par jchd
Dans ces exemples, la question n'est pas la version de PCRE utilisée. La différence provient des options différentes utilisées.

Ah, changement de cible en cours de route !
La "Quick Reference" proposée par le site est un mémento des méta-caractères de PCRE les plus courants.

Re: [..] Quick reference et Regex ?

Posté : jeu. 16 juin 2016 16:43
par yohan8
Effectivement, j'ai corrigé le premier post.

Comment Autoit gère ces options :

MODIFIER QUICK REFERENCE
g modifier: global. All matches (don't return on first match)
m modifier: multi-line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
x modifier: extended. Spaces and text after a # in the pattern are ignored
X modifier: eXtra. A \ followed by a letter with no special meaning is faulted
s modifier: single line. Dot matches newline characters
u modifier: unicode: Pattern strings are treated as UTF-16. Also causes escape sequences to match unicode characters
U modifier: Ungreedy. The match becomes lazy by default. Now a ? following a quantifier makes it greedy
A modifier: Anchored. Pattern is forced to ^
J modifier: Allow duplicate subpattern names
All flags with further information can be found in the quick reference.

Re: [..] Quick reference et Regex ?

Posté : jeu. 16 juin 2016 16:46
par jchd
Voir l'aide de StringRegExp. Les options sont passées sous la forme (?im-sx) dans le pattern.

Re: [..] Quick reference et Regex ?

Posté : jeu. 16 juin 2016 17:03
par yohan8
Merci, j'ai activé le multiline avec (?m) et tout fonctionne
https://regex101.com/r/dE8uJ1/147