Expressions régulières
Définition
Une expression régulière est une chaîne de caractères pouvant contenir des éléments spéciaux décrits ci-dessous. Une chaîne de caractères peut être comparée à une expression régulière à l'aide de l'opérateur ~ ou de la fonction does:match:.
*
Zéro, un ou plusieurs caractère(s) quelconque(s).
Exemples
>> "abcde" ~ "a*"
true
>> "abcde" ~ "*a"
false
>> "abcde" ~ "*c*"
true
?
Un caractère quelconque.
Exemples
>> "abc" ~ "a?c"
true
>> "abc" ~ "a??"
true
[...]
Un caractères faisant partie de l'ensemble donné.
[...](n-m)
Entre n et m caractères faisant partie de l'ensemble donné. m est factultatif et peut être ignoré.
Exemples
>> "xabc" ~ "[xyz]*"
true
>> "xabc" ~ "*[aAbBcC](1-3)"
true
>> "abc" ~ "[aAbBcC](3-)"
true
[!...]
Un caractère ne faisant pas partie de l'ensemble donné.
Exemple
>> "abc" ~ "[!aA]*"
false
^x
Minuscule.
^X
Majuscule.
^a
Voyelle.
^b
Consonne.
^0
Chiffre.
Exemples
>> "2004" ~ "^0(2-4)"
true
>> "Simon" ~ "^X^x(1-)"
true
{...,...}
Une occurrence de l'une des chaînes séparées par les virgules.
!{...,...}
Aucune occurrence des chaînes séparées par les virgules.
Exemples
>> "chat noir" ~ "*{noir,blanc}*"
true
>> "chat blanc" ~ "*{noir,blanc}*"
true
Pour recherche une virgule ou une accolade, précéder le caractère d'un "\":
>> "abc, def" ~ "*{.,\,}*"
true
Remplacements
Une expression régulière peut être également utilisée pour remplacer certaines parties d'une chaîne de caractères. La séquence "%n" peut être utilisée pour faire référence au nième élément spécial (tel que décrit ci-dessus) de l'expression régulière.
Exemples
>> s = "mon fichier.txt"
>> replaceIn:s template:"*.*" with:"%1.xml"
>> s
mon fichier.xml
>> copyByReplacingIn:s template:"*.*" with:"Nom = '%1'; Extension = '%2'"
Nom = 'mon fichier'; Extension = 'xml'
>> s = "Abc, def. Ghi; jkl."
>> replaceIn:s occurrencesOfTemplate:"[.\,;]" with:"%1/%1"
>> s
Abc,/, def./. Ghi;/; jkl./."