]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/regex.tex
wxFileName::Get/SetTimes() finally seem to work under Windows
[wxWidgets.git] / docs / latex / wx / regex.tex
index 32fa868d6a6ed91b40c12983b2ab185e89c6a6cb..175fcd0aa4772d6eda1090d876343dfdf7518678 100644 (file)
@@ -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