$rsearch

Utilisation : $rsearch(texte,motif[,groupe])
Catégorie : texte

Description:

Recherche d’expression régulière. Cette fonction renverra le premier groupe correspondant spécifié par motif à partir de texte. Pour plus d’informations sur les expressions régulières, veuillez consulter l’article sur Wikipedia.

Si une sous-expression marquée est définie à l’aide de parenthèses dans le modèle de recherche, seul le modèle capturé par la sous-expression sera renvoyé. Si plus d’une sous-expression marquée est définie et mise en correspondance, seul le modèle capturé par la première sous-expression sera renvoyé. Si plus d’une sous-expression marquée est définie et que toutes ne correspondent pas, une chaîne vide sera renvoyée. Si aucune sous-expression n’est spécifiée, le modèle capturé par l’expression de recherche entière sera retourné.

Si le paramètre facultatif group n’est pas fourni ou est vide, renvoie le premier groupe de capture qui correspond à quelque chose (y compris la chaîne vide) ou la correspondance entière.

Si group est un nombre entier, renvoie le groupe de capture à la position correspondant à ce nombre entier. Sinon, renvoie le groupe de capture nommé group, sans les espaces blancs qui l’entourent.

Note

Lorsque vous saisissez des expressions régulières dans des scripts Picard, vous devez échapper la barre oblique inversée « \ », le signe dollar « $ », la virgule « , » ainsi que les parenthèses ouvrante et fermante « ( » et « ) » afin d’empêcher Picard de les interpréter comme faisant partie de la commande du script. Pour ce faire, il suffit d’insérer une barre oblique inversée avant le caractère à échapper. Par exemple, l’expression régulière ^\s*([0-9,\.]*)$ devrait être saisie sous la forme ^\\s*\([0-9\,\\.]*\)\$.

Note

L’argument group a été ajouté dans Picard v2.14.

Exemple:

Les instructions suivantes renverront les valeurs indiquées :

$rsearch(test \(disc 1\),\\\(disc \(\\d+\)\\\))  ==>  "1"
$rsearch(test \(disc 1\),\\\(disc \\d+\\\))      ==>  "(disc 1)"
$rsearch(test,x)                                 ==>  ""
$rsearch(test,t)                                 ==>  "t"
$rsearch(test,s)                                 ==>  "s"
$rsearch(test,\(e\).*s)                          ==>  "e"
$rsearch(test,\(e\).*\(s\))                      ==>  "e"
$rsearch(test,\(e\).*x)                          ==>  ""
$rsearch(test,\(e\).*\(x\))                      ==>  ""
$rsearch(disc: 3,\(\\w+\): \(\\d+\),1)           ==>  "disc"
$rsearch(disc: 3,\(\\w+\): \(\\d+\),2)           ==>  "3"