<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Colorer-take5 Library: CRegExp Class Reference</title> <link href="../styles/styles.css" rel="stylesheet" type="text/css"> <link href="../styles/doc.css" rel="stylesheet" type="text/css"> <link rel="icon" href="../images/logo-small-api.png"/> </head> <body> <div align='center'> <a href="../index.html">Home</a> | <a href="modules.html">Modules</a> | <a href="hierarchy.html">Class Hierarchy</a> | <a href="classes.html">Alphabetical List</a> | <a href="annotated.html">Compound List</a> | <a href="pages.html">Related Pages</a> </div> <!-- Generated by Doxygen 1.4.6 --> <h1>CRegExp Class Reference<br> <small> [<a class="el" href="group__cregexp.html">Regular Expressions</a>]</small> </h1><!-- doxytag: class="CRegExp" --><hr><a name="_details"></a><h2>Detailed Description</h2> Regular Expression compiler and matcher. <p> Colorer regular expressions library cregexp.<p> <dl compact><dt><b>1. Features.</b></dt><dd></dd></dl> <dl compact><dt><b>1.1. Colorer Unicode classes.</b></dt><dd><ul> <li>Unicode Consortium regexp level 1 support. All characters are treated as independent 16-bit units. The result of RE is independent of current locale.</li><li>Unicode syntax extensions:<ul> <li>Unicode general category char class:<ul> <li>[{L}{Nd}] - all letters and decimal digits,</li><li>[{ALL}] - as '.',</li><li>[{ASSIGNED}] - all assigned unicode characters,</li><li>[{UNASSIGNED}] - all unassigned unicode characters.</li></ul> </li><li>Char classes substraction unicode extension:<ul> <li>[{ASSIGNED}-[{Lu}]-[{Ll}]] - all assigned characters except,</li><li>upper and lower case characters.</li></ul> </li><li>Char classes connection syntax:<ul> <li>[{Lu}[{Ll}]] - upper and lower case characters.</li></ul> </li><li>Char classes intersection syntax:<ul> <li>[{ALL}&&[{L}]] - only Letter characters.</li></ul> </li><li><a class="el" href="classCharacter.html">Character</a> reference syntax: \x{2028} \x0A as in Perl.</li><li>Unicode form \u2028 is unused (\u - upper case char).</li></ul> </li></ul> </dd></dl> <dl compact><dt><b>1.2. Extensions.</b></dt><dd><ul> <li>Bracket extensions:<ul> <li>(?{name} pattern ) - named bracket,</li><li>\p{name} - named bracket reference.</li><li>(?{} pattern ) - no capturing bracket as (?: pattern ) in Perl.</li></ul> </li><li>Look Ahead/Backward:<ul> <li>pattern?= as Perl's (?=pattern)</li><li>pattern?! as Perl's (?!pattern)</li><li>pattern?N - N symbols backward look for pattern</li><li>pattern?~N - N symbols backward look for no pattern</li></ul> </li><li>Colorer library extensions:<ul> <li>\m \M - sets new start and end of zero(default) bracket.</li><li>\yN \YN \y{name} \Y{name} - back reference into another RE's bracket.</li></ul> </li></ul> </dd></dl> <dl compact><dt><b>1.3. Perl compatibility.</b></dt><dd><ul> <li>Modifiers //ismx</li><li>\ p{name} - back reference to named bracket (but not named property as in Perl!)</li><li>No POSIX character classes support.</li></ul> </dd></dl> <dl compact><dt><b>2. Dislikes:</b></dt><dd></dd></dl> <dl compact><dt><b>2.1. According to Unicode RE level 1 support:</b></dt><dd><ul> <li>No surrogate symbols support,</li><li>No string length changes on case mappings (only 1 <-> 1 mappings), </li></ul> </dd></dl> <dl compact><dt><b>2.2. Algorithmic problems:</b></dt><dd><ul> <li>Stack recursion implementation. </li></ul> </dd></dl> <p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#1f5d980e134b897b0ae4f8bd535a5271">CRegExp</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Empty constructor. <a href="#1f5d980e134b897b0ae4f8bd535a5271"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="08b88cb1e3ab56f5fa273f7dd4ff753c"></a><!-- doxytag: member="CRegExp::CRegExp" ref="08b88cb1e3ab56f5fa273f7dd4ff753c" args="(const String *text)" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#08b88cb1e3ab56f5fa273f7dd4ff753c">CRegExp</a> (const <a class="el" href="classString.html">String</a> *text)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructs regular expression and compile it with <code>text</code> pattern. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2e16623a63ab4f81ff5ea75e333e292"></a><!-- doxytag: member="CRegExp::isOk" ref="b2e16623a63ab4f81ff5ea75e333e292" args="()" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#b2e16623a63ab4f81ff5ea75e333e292">isOk</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Is compilied RE well-formed. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3fda50c55f4a5a651c139d5586c788dd"></a><!-- doxytag: member="CRegExp::getError" ref="3fda50c55f4a5a651c139d5586c788dd" args="()" --> EError </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#3fda50c55f4a5a651c139d5586c788dd">getError</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns information about RE compilation error. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="726befa6cdc8a21b1c089f35f3458690"></a><!-- doxytag: member="CRegExp::setPositionMoves" ref="726befa6cdc8a21b1c089f35f3458690" args="(bool moves)" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#726befa6cdc8a21b1c089f35f3458690">setPositionMoves</a> (bool moves)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Tells RE parser, that it must make moves on tested string while RE matching. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1e355d51d34b6d7aaafcad03f665c86b"></a><!-- doxytag: member="CRegExp::getBracketNo" ref="1e355d51d34b6d7aaafcad03f665c86b" args="(const String *brname)" --> int </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#1e355d51d34b6d7aaafcad03f665c86b">getBracketNo</a> (const <a class="el" href="classString.html">String</a> *brname)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns count of named brackets. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d700b128f9fbba3b2d4b3e479d5a4421"></a><!-- doxytag: member="CRegExp::getBracketName" ref="d700b128f9fbba3b2d4b3e479d5a4421" args="(int no)" --> <a class="el" href="classString.html">String</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#d700b128f9fbba3b2d4b3e479d5a4421">getBracketName</a> (int no)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns named bracked name by it's index. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="63f6899f6cc178e76b841fddfb2fb89c"></a><!-- doxytag: member="CRegExp::setBackRE" ref="63f6899f6cc178e76b841fddfb2fb89c" args="(CRegExp *bkre)" --> bool </td><td class="memItemRight" valign="bottom"><b>setBackRE</b> (<a class="el" href="classCRegExp.html">CRegExp</a> *bkre)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b714acfed3a7711ea749723e625daf4d"></a><!-- doxytag: member="CRegExp::setBackTrace" ref="b714acfed3a7711ea749723e625daf4d" args="(const String *str, SMatches *trace)" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#b714acfed3a7711ea749723e625daf4d">setBackTrace</a> (const <a class="el" href="classString.html">String</a> *str, SMatches *trace)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Changes RE object, used for backreferences with named {} {} operators. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="928f31b78693fe365575f270c2faf0ab"></a><!-- doxytag: member="CRegExp::getBackTrace" ref="928f31b78693fe365575f270c2faf0ab" args="(const String **str, SMatches **trace)" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#928f31b78693fe365575f270c2faf0ab">getBackTrace</a> (const <a class="el" href="classString.html">String</a> **str, SMatches **trace)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns current RE object, used for backreferences with operators. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aa3337933c959c2709e65955c75279cb"></a><!-- doxytag: member="CRegExp::setRE" ref="aa3337933c959c2709e65955c75279cb" args="(const String *re)" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#aa3337933c959c2709e65955c75279cb">setRE</a> (const <a class="el" href="classString.html">String</a> *re)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Compiles specified regular expression and drops all previous structures. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f36dc8ed887c4fba2dfed2f1ef9aa250"></a><!-- doxytag: member="CRegExp::parse" ref="f36dc8ed887c4fba2dfed2f1ef9aa250" args="(const String *str, SMatches *mtch)" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#f36dc8ed887c4fba2dfed2f1ef9aa250">parse</a> (const <a class="el" href="classString.html">String</a> *str, SMatches *mtch)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Runs RE parser against input string <code>str</code>. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eb0a810445281d98f9df45e9e1e46b6c"></a><!-- doxytag: member="CRegExp::parse" ref="eb0a810445281d98f9df45e9e1e46b6c" args="(const String *str, int pos, int eol, SMatches *mtch, int soscheme=0, int moves=-1)" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classCRegExp.html#eb0a810445281d98f9df45e9e1e46b6c">parse</a> (const <a class="el" href="classString.html">String</a> *str, int pos, int eol, SMatches *mtch, int soscheme=0, int moves=-1)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Runs RE parser against input string <code>str</code>. <br></td></tr> </table> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="1f5d980e134b897b0ae4f8bd535a5271"></a><!-- doxytag: member="CRegExp::CRegExp" ref="1f5d980e134b897b0ae4f8bd535a5271" args="()" --><p> <table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">CRegExp::CRegExp </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr> </table> <table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td> <p> Empty constructor. <p> No RE tree is builded with this constructor. Use <a class="el" href="classCRegExp.html#aa3337933c959c2709e65955c75279cb">setRE</a> method to change pattern. </td> </tr> </table> <br><br> <center><small> Colorer-take5 Library. Copyright © 1999-2006 Igor Russkih.<br> Generated at Fri Nov 24 17:13:12 2006 by doxygen 1.4.6. </small><center> </BODY> </HTML>