#include <Regex.h>
Inheritance diagram for casa::Regex:


Part of API
This class provides regular expression functionality, such as matching and searching in strings, comparison of expressions, and input/output. It is built on the regular expression functions in the GNU library (see files cregex.h and cregex.cc).
cregex.cc supports many syntaxes. Regex supports only one syntax, the extended regular expression with { and not \{ as a special character. The special characters are:
[abc]. A hyphen can be used for a character range; e.g. [a-z]. [^abc] means any character but a, b, and c. If ^ is not the first character, it is a literal caret. If - is the last character, it is a literal hyphen. If ] is the first character, it is a literal closing bracket. [^[:upper:]] is equal to [^A-Z]. Note that [:upper:] is more portable, because A-Z fails for the EBCDIC character set. Several global Regex objects are predefined for common functionality.
fromPattern converts a shell-like pattern to a String which can be used to create a Regex from it. A pattern has the following special characters: {abc,defg} means abc or defg. Brace expressions can be nested and can contain other special characters. fromSQLPattern converts an SQL-like pattern to a String which can be used to create a Regex from it. A pattern has the following special characters: fromString converts a normal string to a regular expression. This function escapes characters in the string which are special in a regular expression. In this way a normal string can be passed to a function taking a regular expression.
Regex RXwhite("[ \n\t\r\v\f]+", 1); (blank, newline, tab, return, vertical tab, formfeed) Regex RXint("-?[0-9]+", 1); Regex RXdouble("-?(([0-9]+\\.[0-9]*)|([0-9]+)|(\\.[0-9]+))([eE][+-]?[0-9]+)?", 1, 200); Regex RXalpha("[A-Za-z]+", 1); Regex RXlowercase("[a-z]+", 1); Regex RXuppercase("[A-Z]+", 1); Regex RXalphanum("[0-9A-Za-z]+", 1); Regex RXidentifier("[A-Za-z_][A-Za-z0-9_]*", 1);
Regex rx1 (Regex::fromPattern ("St*.{h,cc}"); results in regexp "St.*\.((h)|(cc))" Regex rx2 (Regex::fromString ("tRegex.cc"); results in regexp "tRegex\.cc"
Definition at line 189 of file Regex.h.
Public Member Functions | |
| Regex () | |
| Default constructor uses a zero-length regular expression. | |
| Regex (const String &exp, Bool fast=False, Int sz=40, const Char *translation=0) | |
| Construct a regular expression. | |
| Regex (const Regex &that) | |
| Copy constructor (copy semantics). | |
| virtual | ~Regex () |
| const String & | regexp () const |
| Get the regular expression string. | |
| const Char * | transtable () const |
| Get the translation table (can be a zero pointer). | |
| virtual String::size_type | match (const Char *s, String::size_type len, String::size_type pos=0) const |
Test if the regular expression matches (part of) string s. | |
| Int | match_info (Int &start, Int &length, Int nth=0) const |
Return some internal cregex info. | |
| Bool | OK () const |
| Does it contain a valid Regex? | |
| Regex & | operator= (const Regex &that) |
| Assignment (copy semantics). | |
| Regex & | operator= (const String &strng) |
| virtual String::size_type | search (const Char *s, String::size_type len, Int &matchlen, Int pos=0) const |
Test if the regular expression occurs in string s. | |
| virtual String::size_type | find (const Char *s, String::size_type len, Int &matchlen, String::size_type pos=0) const |
Search string s of length len, starting at position pos. | |
Static Public Member Functions | |
| static String | fromPattern (const String &pattern) |
| Convert a shell-like pattern to a regular expression. | |
| static String | fromSQLPattern (const String &pattern) |
| Convert an SQL-like pattern to a regular expression. | |
| static String | fromString (const String &strng) |
| Convert a normal string to a regular expression. | |
Protected Member Functions | |
| void | create (const String &, Int, Int, const Char *) |
| Compile the regular expression. | |
| void | dealloc () |
Deallocate the stuff allocated by create. | |
Protected Attributes | |
| String * | str |
| Int | fastval |
| Int | bufsz |
| Char * | trans |
| re_pattern_buffer * | buf |
| re_registers * | reg |
Friends | |
| ostream & | operator<< (ostream &ios, const Regex &exp) |
| Write as ASCII. | |
| casa::Regex::Regex | ( | ) |
Default constructor uses a zero-length regular expression.
| casa::Regex::Regex | ( | const String & | exp, | |
| Bool | fast = False, |
|||
| Int | sz = 40, |
|||
| const Char * | translation = 0 | |||
| ) |
Construct a regular expression.
Optionally a fast map can be created, a buffer size can be given and a translation table (of 256 chars) can be applied. The translation table can, for instance, be used to map lowercase characters to uppercase. See cregex.cc (the extended regular expression matching and search library) for detailed information.
| casa::Regex::Regex | ( | const Regex & | that | ) |
Copy constructor (copy semantics).
| virtual casa::Regex::~Regex | ( | ) | [virtual] |
Assignment (copy semantics).
Convert a shell-like pattern to a regular expression.
This is useful for people who are more familiar with patterns than with regular expressions.
Convert an SQL-like pattern to a regular expression.
This is useful TaQL which mimics SQL.
Convert a normal string to a regular expression.
This consists of escaping the special characters. This is useful when one wants to provide a normal string (which may contain special characters) to a function working on regular expressions.
| const String& casa::Regex::regexp | ( | ) | const |
Get the regular expression string.
| const Char* casa::Regex::transtable | ( | ) | const |
Get the translation table (can be a zero pointer).
| virtual String::size_type casa::Regex::match | ( | const Char * | s, | |
| String::size_type | len, | |||
| String::size_type | pos = 0 | |||
| ) | const [virtual] |
Test if the regular expression matches (part of) string s.
The return value gives the length of the matching string part, or String::npos if there is no match or an error. The string has len characters and the test starts at position pos. The string may contain null characters. Negative p is allowed to match at end.
Tip: Use the appropriate String functions to test if a string matches a regular expression. Regex::match is pretty low-level.
Reimplemented from casa::RegexBase.
| virtual String::size_type casa::Regex::search | ( | const Char * | s, | |
| String::size_type | len, | |||
| Int & | matchlen, | |||
| Int | pos = 0 | |||
| ) | const [virtual] |
Test if the regular expression occurs in string s.
The return value gives the position of the first substring matching the regular expression. The length of that substring is returned in matchlen. The string has len characters and the test starts at position pos. The string may contain null characters. The search will do a reverse search if the pos given is less than 0. Tip: Use the appropriate String functions to test if a regular expression occurs in a string. Regex::search is pretty low-level.
Reimplemented from casa::RegexBase.
| virtual String::size_type casa::Regex::find | ( | const Char * | s, | |
| String::size_type | len, | |||
| Int & | matchlen, | |||
| String::size_type | pos = 0 | |||
| ) | const [virtual] |
Search string s of length len, starting at position pos.
Returned is the address of the first character of the substring found (or String::npos if not found). The matched length is returned in matchlen
Implements casa::RegexBase.
Return some internal cregex info.
Compile the regular expression.
| void casa::Regex::dealloc | ( | ) | [protected] |
Deallocate the stuff allocated by create.
| ostream& operator<< | ( | ostream & | ios, | |
| const Regex & | exp | |||
| ) | [friend] |
Write as ASCII.
String* casa::Regex::str [protected] |
Int casa::Regex::fastval [protected] |
Int casa::Regex::bufsz [protected] |
Char* casa::Regex::trans [protected] |
re_pattern_buffer* casa::Regex::buf [protected] |
re_registers* casa::Regex::reg [protected] |
1.5.1