Reguläre Ausdrücke
Informationen
- Kategorien: Kernel | Klassenformeln
- Version: 12.1.0.1617
- Veröffentlichungsdatum: Donnerstag, 11. März 2010
- Entwickler: Schulze
- Benötigt Datenbankänderung: Nein
- Betreff: Regex, Reguläre Ausdrücke
Beschreibung
In den Klassenformeln git es 3 neue Funktionen:
- RegExMatch
- RegExSearch
- RegExReplace
Mit diesen Funktionen kann man reguläre Ausdrücke nutzen.
--> Prüfen, suchen, ersetzen mit "Regulären Ausdrücken" <--
RegExMatch( «string sPattern», «string sTemplateText» [, «int nSyntaxOptions»] [, «int nMatchBehaviorOptions»] [, sErrorValueString» ] )
Rückgabe 1, wenn der Ausdruck passt, ansonsten 0.
RegExSearch( «string sPattern», «string sTemplateText», «byref string sMatchValues[]», «byref int nMatchStartIndexe[]», «byref int nMatchLengthes[]» [, «int nSyntaxOptions»] [, «int nMatchBehaviorOptions»] [, «byref string sErrorValueString»] [, «byref string sGroupValues[]», «byref int nGroupStartIndexe[]», «byref int nGroupLengthes[]», «byref int nGroupMatchIndexes[] ] )»
Rückgabe der Anzahl der gefundenen Treffer, die einzelnen Resultate der Suche stehen in den Arrays, die Indizes sind alle 0-basierend.
RegExReplace( «string sPattern», «string sTemplateText», «string sReplacePattern» [, «int nSyntaxOptions»] [, «int nMatchBehaviorOptions»] [, sErrorValueString» ] )
Rückgabe des neuen Textes mit den ersetzten Zeichen.
Zum Testen gibt es einen Dialog im Klassenformeleditor.
Bilder
Beispielcode
var string $sError;
var string $sPattern;
var string $sTemplate;
var string $sMsg;
var int $nMatchCount;
var int $nMatch;
var int $nGroupCount;
var int $nGroup;
var string $matches[];
var int $matchstartindexe[];
var int $matchlengthes[];
var string $groups[];
var int $groupstartindexe[];
var int $grouplengthes[];
var int $groupmatchindexe[];
$sPattern = "^«([.>_A-Z0-9]*)(\\b[^»]*)»(.*?)(«/\\1»)";
$sTemplate = "«EL_contact»\r\nKNr:«Number»\r\n«EL_Task»\r\nANr:«Number»\r\n«/EL_Task»\r\n«/EL_contact»";
$nMatchCount = RegExSearch( $sPattern, $sTemplate, $matches, $matchstartindexe, $matchlengthes, 0, 0, $sError, $groups, $groupstartindexe, $grouplengthes, $groupmatchindexe );
if( StrLength($sError) > 0 )
{
MessageBox( $sError );
return;
}
$nMatch = 0;
$nGroupCount = GetSize( $groups );
while ( $nMatch < $nMatchCount )
{
$sMsg = $sMsg + "Match: " +
$matches[$nMatch] + " " +
"Start=" + IntToStr($matchstartindexe[$nMatch]) + ", " +
"Len=" + IntToStr($matchlengthes[$nMatch]) + "\r\n";
$nGroup = 0;
while ( $nGroup < $nGroupCount )
{
if( $groupmatchindexe[$nGroup] == $nMatch )
{
$sMsg = $sMsg + "\tGroup: " +
$groups[$nGroup] + " " +
"Start=" + IntToStr($groupstartindexe[$nGroup]) + ", " +
"Len=" + IntToStr($grouplengthes[$nGroup]) + "\r\n";
}
$nGroup = $nGroup + 1;
}
$nMatch = $nMatch + 1;
}
MessageBox( $sMsg );