X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/11ec1f16f83fd89a86c2b8912c991b226c15886e..e531b73f8910b3dcb2457bb74eb3723f2d516f5f:/docs/latex/wx/regex.tex diff --git a/docs/latex/wx/regex.tex b/docs/latex/wx/regex.tex index 32fa868d6a..175fcd0aa4 100644 --- a/docs/latex/wx/regex.tex +++ b/docs/latex/wx/regex.tex @@ -51,44 +51,71 @@ No base class \wxheading{Data structures} Flags for regex compilation to be used with \helpref{Compile()}{wxregexcompile}: + \begin{verbatim} enum { // use extended regex syntax (default) - wxRE\_EXTENDED = 0, + wxRE_EXTENDED = 0, // use basic RE syntax - wxRE\_BASIC = 2, + wxRE_BASIC = 2, // ignore case in match - wxRE\_ICASE = 4, + wxRE_ICASE = 4, // only check match, don't set back references - wxRE\_NOSUB = 8, + wxRE_NOSUB = 8, // if not set, treat '\n' as an ordinary character, otherwise it is // special: it is not matched by '.' and '^' and '$' always match - // after/before it regardless of the setting of wxRE\_NOT[BE]OL - wxRE\_NEWLINE = 16, + // after/before it regardless of the setting of wxRE_NOT[BE]OL + wxRE_NEWLINE = 16, // default flags - wxRE\_DEFAULT = wxRE\_EXTENDED + wxRE_DEFAULT = wxRE_EXTENDED } \end{verbatim} Flags for regex matching to be used with \helpref{Matches()}{wxregexmatches}. These flags are mainly useful when doing several matches in a long string -to prevent erroneous matches for {\tt '\^'} and {\tt '\$'} +to prevent erroneous matches for {\tt '^'} and {\tt '\$'}: + \begin{verbatim} enum { // '^' doesn't match at the start of line - wxRE\_NOTBOL = 32, + wxRE_NOTBOL = 32, // '$' doesn't match at the end of line - wxRE\_NOTEOL = 64 + wxRE_NOTEOL = 64 +} +\end{verbatim} + +\wxheading{Examples} + +A bad example of processing some text containing email addresses (the example +is bad because the real email addresses can have more complicated form than +{\tt user@host.net}): + +\begin{verbatim} +wxString text; +... +wxRegEx reEmail = "([^@]+)@([[: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? + { + ... + } } + +// or we could do this to hide the email address +size_t count = reEmail.ReplaceAll(text, "HIDDEN@\\2\\3"); +printf("text now contains %u hidden addresses", count); \end{verbatim} \latexignore{\rtfignore{\wxheading{Members}}} @@ -99,8 +126,6 @@ enum Default ctor: use \helpref{Compile()}{wxregexcompile} later. -\membersection{wxRegEx::wxRegEx}\label{wxregexwxregex} - \func{}{wxRegEx}{\param{const wxString\& }{expr}, \param{int }{flags = wxRE\_DEFAULT}} Create and compile the regular expression, use @@ -116,7 +141,7 @@ dtor not virtual, don't derive from this class \func{bool}{Compile}{\param{const wxString\& }{pattern}, \param{int }{flags = wxRE\_DEFAULT}} -Compile the string into regular expression, return {\tt TRUE} if ok or {\tt FALSE} +Compile the string into regular expression, return {\tt TRUE} if ok or {\tt FALSE} if string has a syntax error. \membersection{wxRegEx::IsValid}\label{wxregexisvalid} @@ -168,9 +193,9 @@ Replaces the current regular expression in the string pointed to by {\it text}, with the text in {\it replacement} and return number of matches replaced (maybe $0$ if none found) or $-1$ on error. -The replacement text may contain back references {\tt \\number} which will be +The replacement text may contain back references {\tt $\backslash$number} which will be replaced with the value of the corresponding subexpression in the -pattern match. {\tt \\0} corresponds to the entire match and {\tt \&} is a +pattern match. {\tt $\backslash$0} corresponds to the entire match and {\tt \&} is a synonym for it. Backslash may be used to quote itself or {\tt \&} character. {\it maxMatches} may be used to limit the number of replacements made, setting