$rsearch

Gebruik: $rsearch(tekst,patroon[,groep])
Categorie: tekst

Beschrijving:

Zoeken met een reguliere expressie. Deze functie retourneert de eerste groep uit tekst die overeenkomt met patroon. Meer informatie over reguliere expressies kun je vinden op Wikipedia.

Als er binnen het zoekpatroon met haakjes een gemarkeerde subexpressie wordt opgegeven, wordt alleen het patroon dat wordt herkend met de subexpressie geretourneerd. Als er meer dan één subexpressie is opgegeven en wordt gevonden, wordt alleen het patroon dat wordt herkend met de eerste subexpressie geretourneerd. Als er meer dan één subexpressie is opgegeven en ze niet allemaal worden gevonden, wordt er een lege tekenreeks geretourneerd. Als er geen subexpressie is opgegeven, wordt het patroon dat wordt herkend met de hele zoekexpressie geretourneerd.

Als de optionele parameter groep niet is opgegeven of leeg is, wordt de eerste herkende groep die ergens mee overeenkwam (inclusief de lege tekenreeks) of de hele overeenkomst geretourneerd.

Als groep een integer is, wordt de herkende groep in de plek die overeenkomt met de integer geretourneerd. Anders wordt de herkende groep met de naam groep, zonder de omliggende witruimten, geretourneerd.

Notitie

Als je in Picard-scripts reguliere expressies gebruikt, moet je terugstrepen (\), dollartekens ($), komma’s (,) en linker en rechter haakjes (() en ()) met een terugstreep uitsluiten, omdat Picard ze anders als deel van de scriptinstructie interpreteert. Dit doe je door er een terugstreep (\) voor te zetten. De reguliere expressie ^\s*([0-9,\.]*)$ moet bijvoorbeeld worden ingevoerd als ^\\s*\([0-9\,\\.]*\)\$.

Notitie

Het argument groep is in Picard 2.14 toegevoegd.

Voorbeeld:

De volgende instructies retourneren de aangegeven waarden:

$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"