%% Created: 14.07.01
%% RCS-ID: $Id$
%% Copyright: (c) 2001 Vadim Zeitlin
-%% License: wxWindows license
+%% License: wxWidgets license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\class{wxRegEx}}\label{wxregex}
-wxRegEx represents a regular expression. The regular expressions syntax
-supported is the POSIX one. Both basic and extended regular expressions are
-supported but, unlike POSIX C API, the extended ones are used by default.
+wxRegEx represents a regular expression. This class provides support
+for regular expressions matching and also replacement.
-This class provides support for regular expressions matching and also
-replacement. It is built on top of either the system library (if it has support
-for POSIX regular expressions - which is the case of the most modern Unices) or
-uses a version of Henry Spencer's library from tcl.
+It is built on top of either the system library (if it has support
+for POSIX regular expressions - which is the case of the most modern
+Unices) or uses the built in Henry Spencer's library. Henry Spencer
+would appreciate being given credit in the documentation of software
+which uses his library, but that is not a requirement.
+
+Regular expressions, as defined by POSIX, come in two flavours: {\it extended}
+and {\it basic}. The builtin library also adds a third flavour
+of expression \helpref{advanced}{wxresyn}, which is not available
+when using the system library.
+
+Unicode is fully supported only when using the builtin library.
+When using the system library in Unicode mode, the expressions and data
+are translated to the default 8-bit encoding before being passed to
+the library.
+
+On platforms where a system library is available, the default is to use
+the builtin library for Unicode builds, and the system library otherwise.
+It is possible to use the other if preferred by selecting it when building
+the wxWidgets.
\wxheading{Derived from}
\begin{verbatim}
enum
{
- // use extended regex syntax (default)
+ // use extended regex syntax
wxRE_EXTENDED = 0,
+
+ // use advanced RE syntax (built-in regex only)
+#ifdef wxHAS_REGEX_ADVANCED
+ wxRE_ADVANCED = 1,
+#endif
// use basic RE syntax
wxRE_BASIC = 2,
\begin{verbatim}
wxString text;
...
-wxRegEx reEmail = "([^@]+)@([[:alnum:].-_].)+([[:alnum:]]+)";
+wxRegEx reEmail = wxT("([^@]+)@([[:alnum:].-_].)+([[:alnum:]]+)");
if ( reEmail.Matches(text) )
{
wxString text = reEmail.GetMatch(email);
wxString username = reEmail.GetMatch(email, 1);
- if ( reEmail.GetMatch(email, 3) == "com" ) // .com TLD?
+ if ( reEmail.GetMatch(email, 3) == wxT("com") ) // .com TLD?
{
...
}
}
// or we could do this to hide the email address
-size_t count = reEmail.ReplaceAll(text, "HIDDEN@\\2\\3");
+size_t count = reEmail.ReplaceAll(text, wxT("HIDDEN@\\2\\3"));
printf("text now contains %u hidden addresses", count);
\end{verbatim}
and only if {\tt wxRE\_NOSUB} was {\bf not} used in
\helpref{Compile()}{wxregexcompile}.
+\membersection{wxRegEx::GetMatchCount}\label{wxregexgetmatchcount}
+
+\constfunc{size\_t}{GetMatchCount}{\void}
+
+Returns the size of the array of matches, i.e. the number of bracketed
+subexpressions plus one for the expression itself, or $0$ on error.
+
+May only be called after successful call to \helpref{Compile()}{wxregexcompile}.
+and only if {\tt wxRE\_NOSUB} was {\bf not} used.
+
\membersection{wxRegEx::Matches}\label{wxregexmatches}
\constfunc{bool}{Matches}{\param{const wxChar* }{text}, \param{int }{flags = 0}}