
Envoyé par
Sve@r
je préfère écrire {1,} mais je ne sais pas si c'est POSIX
Ça l'est tout à fait. Il y a deux versions de regex POSIX, la version basique (BRE) et la version étendue (ERE).
À l'origine dans la version basique les opérateurs +, ? et | n'existent pas (ce qui est très pratique surtout pour le dernier.). Les solutions pour obtenir a+ sont donc aa* ou a\{1,\}.
Maintenant plusieurs implémentations des BREs sont plus souples et ont introduit +, ? et |. Ce n'est pas le cas en C, mais ça l'est pour par exemple GNU sed. Néanmoins ces trois signes doivent être échappés comme les parenthèses et les accolades pour ne pas être vus comme des caractères littéraux.
Donc en version BRE la pattern serait (attention en C, il faut doubler les échappements):
\\([[:alpha:]]\\{1,\\}\\)=\\([[:digit:]]\\{1,\\}\\);\\{0,1\\}
En version étendue ERE:
([[:alpha:]]+)=([[:digit:]]+);?
(inutile de mettre le = dans une classe de caractère vu qu'il s'y retrouve tout seul, ni de capturer le point virgule.)
Dans les deux modes, rien n'empêche de remplacer [[:alpha:]] par [a-zA-Z] et [[:digit:]] par [0-9].
Partager