Les expressions régulières avec Julia
Généralités
Julia désigne à la fois un langage de programmation et l’interpréteur qui permet d’exécuter ses instructions. Il a été créé en 2009 par Jeff Bezanson, Stefan Karpinski, Viral B. Shah et Alan Edelman, dans le but de proposer un langage libre, de haut niveau, performant et adapté aux besoins de la communauté scientifique. Il est interprété, mais implémente aussi une compilation à la volée (JIT en anglais, pour Just In Time compilation) et une compilation anticipée (AOT en anglais, pour Ahead-Of-Time compilation). Il est donc particulièrement adapté aux applications scientifiques, pour lesquelles il y a généralement un grand besoin de performances. Il est bien plus efficace que d’autres langages, comme le Python par exemple, et bien qu’il dispose d’un langage de haut niveau, les durées d’exécution de ses programmes sont comparables à celles du C++. C’est un langage très jeune, mais son potentiel énorme a engendré la création d’une communauté importante et très active qui va très probablement faire de lui un langage incontournable dans les années qui viennent.
Les expressions régulières utilisées par Julia sont de type PCRE2 (Perl Compatible Regular Expressions...
La définition des expressions régulières
En ce qui concerne la définition des expressions régulières, Julia possède un type spécifique, différent du type chaîne de caractères généralement utilisé par les autres langages. Deux méthodes existent pour spécifier une expression régulière, la première consiste à préfixer par la lettre r une chaîne fixe contenant l’expression, et la seconde fait appel au constructeur Regex(). Chaque méthode de définition peut accepter des indicateurs binaires (flags) ou modificateurs (modifiers) qui influent sur la façon d’interpréter l’expression régulière.
Première méthode, utilisant une chaîne fixe :
Syntaxe
r"expression_régulière"
r"expression_régulière"modificateurs
Les modificateurs éventuels suivent immédiatement la double quote fermante située à la fin de l’expression régulière. Ils ne sont pas placés entre quotes.
Exemple
r"[a-z]{1,3}_[a-z]+\.c"i
Seconde méthode, utilisant un constructeur :
Syntaxe
Regex("expression_régulière")
Regex("expression_régulière", "modificateurs")
Exemple
re = Regex(var...
Manipulation des expressions régulières
Julia propose des fonctions de recherche de correspondances et de substitution de chaînes de caractères.
1. Recherche de chaînes
a. Fonction occursin()
La fonction occursin() essaie de trouver une correspondance entre une chaîne et une expression régulière.
Syntaxe
occursin(expression_régulière, chaîne_de_caractères)
Code retour : variable booléenne.
Exemples
julia> occursin(r"[0-9]+", "Abc123xyZ")
true
julia> occursin(r"[0-9]{5}", "Abc123xyZ")
false
b. Fonction match()
La fonction match() recherche une ou plusieurs correspondances entre une chaîne et une expression régulière. Des sous-chaînes peuvent être capturées en utilisant les parenthèses autour des sous-expressions.
Syntaxe
match(expression_régulière, chaîne_de_caractères)
Code retour : objet de type RegexMatch.
Exemples
julia> match(r"[A-Z][a-z]+[0-9]+", "Abc123Z")
RegexMatch("Abc123")
julia> m = match(r"[A-Z][a-z]+[0-9]+$", "Abc123Z")
julia> m
julia> typeof(m)
Nothing
Dans l’exemple précédent, il n’y a pas de correspondance, suite à l’ajout du caractère $ impliquant que les chiffres doivent être situés en fin de ligne ou en fin de chaîne. Le résultat retourné est donc vide et de type Nothing.
L’objet retourné peut contenir des sous-chaînes si des captures ont été...
Modificateurs de signification
Certains indicateurs binaires sont disponibles pour modifier légèrement la signification des expressions régulières : ce sont des lettres que l’on peut placer après la double quote fermante qui suit l’expression. Ces lettres sont les suivantes :
-
i : permet d’ignorer la casse des caractères.
-
m : modifie la signification des métacaractères ^ et $ pour gérer les chaînes de caractères multilignes : au lieu de désigner le début et la fin de la chaîne, ils désignent respectivement les début et fin de chaque ligne à l’intérieur de la chaîne, dans le cas où elle contient des sauts de ligne.
-
s : traite la chaîne de caractères comme une seule ligne, ce qui change l’interprétation du métacaractère . et lui permet de correspondre à tous les caractères, même un saut de ligne. Lors d’une utilisation conjointe avec l’indicateur m, les métacaractères ^ et $ continuent d’avoir leur signification de début et fin de ligne au sens où ils correspondent au caractère situé juste après et juste avant un saut de ligne, le métacaractère . correspondant à n’importe quel caractère, y compris le saut de ligne.
-
x : indique...