boost regular expression library

Top  Previous  Next

Skripte > Tokendefinitionen > Reguläre Ausdrücke > boost regular expression library

 

Der TextTransformer verwendet die regular expression library von Dr John Maddock (http://www.boost.org), die einen Teil der gesamten boost-Bibliothek ausmacht. Die Syntax der regulären Ausdrücke hier, ist daher  - mit kleinen Einschränkungen - die gleiche, die dort als POSIX-Extended Regular Expression Syntax beschrieben ist.

Die boost regular expressions können durch Flags modifiziert werden. Im TextTransformer wurden mit zwei Ausnahmen das Standard-Flag ( = extended) beibehalten.

 

const tt_syntax_option_type _boost_regex_normal =

     boost::regex_constants::extended

     & ~boost::regex_constants::no_escape_in_lists

     & ~boost::regex_constants::collate;

 

 

Das Flag "no_escape_in_lists" wurde negiert. D.h. bei der Definition von Zeichenmengen muss dem Backslash-Zeichen selbst ein Backslash vorangestellt werden.

 

Das Flag "collate" wurde negiert, damit Zeichenbereiche in der Ordnung definiert werden können, wie die Zeichen in der ANSI-Tabelle aufgelistet sind.

 

Durch das flag "extended" wird spezifiziert, dass die regulären Ausdrücke auf gleiche Weise arbeiten wie POSIX reguläre Ausdrücke. D.h der Erkennungsalgorithmus arbeitet so, dass der erste mögliche String im Text erkannt wird, und dass im Falle verschiedener Übereinstimmungen an der gleichen Position die Möglichkeit mit der längsten Übereinstimmung ausgewählt wird. Dieser Algorithmus ist für den TextTransformer wesentlich. Um ihn beibehalten zu können, muss leider auf die bisher mögliche Verwendung von nicht gierigen Wiederholungen und einer Kontextvorausschau verzichtet werden. Rückrferenzen sind nicht explizit verboten, aber sie werden normaler Weise nicht korrekt funktionieren, da die Nummerierung von Unterausdrücken in SKIP-ausdrücken verschoben ist. Rückrferenzen sollten nicht verwendet werden.

 

 

 

 



Diese Seite gehört zur TextTransformer Dokumentation

Home  Inhalt  English