Table of Contents

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

Reguläre Ausdrücke

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 );