git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			226 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
						|
%% Name:        regex.tex
 | 
						|
%% Purpose:     wxRegEx documentation
 | 
						|
%% Author:      Vadim Zeitlin
 | 
						|
%% Modified by:
 | 
						|
%% Created:     14.07.01
 | 
						|
%% RCS-ID:      $Id$
 | 
						|
%% Copyright:   (c) 2001 Vadim Zeitlin
 | 
						|
%% License:     wxWindows 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.
 | 
						|
 | 
						|
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 the built in Henry Spencer's library. In the latter case you need to abide
 | 
						|
by the terms of its copyright:
 | 
						|
 | 
						|
\begin{verbatim}
 | 
						|
Copyright 1992, 1993, 1994, 1997 Henry Spencer.  All rights reserved.
 | 
						|
This software is not subject to any license of the American Telephone
 | 
						|
and Telegraph Company or of the Regents of the University of California.
 | 
						|
 | 
						|
Permission is granted to anyone to use this software for any purpose on
 | 
						|
any computer system, and to alter it and redistribute it, subject
 | 
						|
to the following restrictions:
 | 
						|
 | 
						|
1. The author is not responsible for the consequences of use of this
 | 
						|
   software, no matter how awful, even if they arise from flaws in it.
 | 
						|
 | 
						|
2. The origin of this software must not be misrepresented, either by
 | 
						|
   explicit claim or by omission.  Since few users ever read sources,
 | 
						|
   credits must appear in the documentation.
 | 
						|
 | 
						|
3. Altered versions must be plainly marked as such, and must not be
 | 
						|
   misrepresented as being the original software.  Since few users
 | 
						|
   ever read sources, credits must appear in the documentation.
 | 
						|
 | 
						|
4. This notice may not be removed or altered.
 | 
						|
\end{verbatim}
 | 
						|
 | 
						|
\wxheading{Derived from}
 | 
						|
 | 
						|
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,
 | 
						|
 | 
						|
    // use basic RE syntax
 | 
						|
    wxRE_BASIC    = 2,
 | 
						|
 | 
						|
    // ignore case in match
 | 
						|
    wxRE_ICASE    = 4,
 | 
						|
 | 
						|
    // only check match, don't set back references
 | 
						|
    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,
 | 
						|
 | 
						|
    // default flags
 | 
						|
    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 '\textasciicircum'} and {\tt '\$'}:
 | 
						|
 | 
						|
\begin{verbatim}
 | 
						|
enum
 | 
						|
{
 | 
						|
    // '^' doesn't match at the start of line
 | 
						|
    wxRE_NOTBOL = 32,
 | 
						|
 | 
						|
    // '$' doesn't match at the end of line
 | 
						|
    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}}}
 | 
						|
 | 
						|
\membersection{wxRegEx::wxRegEx}\label{wxregexwxregex}
 | 
						|
 | 
						|
\func{}{wxRegEx}{\void}
 | 
						|
 | 
						|
Default ctor: use \helpref{Compile()}{wxregexcompile} later.
 | 
						|
 | 
						|
\func{}{wxRegEx}{\param{const wxString\& }{expr}, \param{int }{flags = wxRE\_DEFAULT}}
 | 
						|
 | 
						|
Create and compile the regular expression, use 
 | 
						|
\helpref{IsValid}{wxregexisvalid} to test for compilation errors.
 | 
						|
 | 
						|
\membersection{wxRegEx::\destruct{wxRegEx}}\label{wxregexdtor}
 | 
						|
 | 
						|
\func{}{\destruct{wxRegEx}}{\void}
 | 
						|
 | 
						|
dtor not virtual, don't derive from this class
 | 
						|
 | 
						|
\membersection{wxRegEx::Compile}\label{wxregexcompile}
 | 
						|
 | 
						|
\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} 
 | 
						|
if string has a syntax error.
 | 
						|
 | 
						|
\membersection{wxRegEx::IsValid}\label{wxregexisvalid}
 | 
						|
 | 
						|
\constfunc{bool}{IsValid}{\void}
 | 
						|
 | 
						|
Return {\tt TRUE} if this is a valid compiled regular expression, {\tt FALSE} 
 | 
						|
otherwise.
 | 
						|
 | 
						|
\membersection{wxRegEx::GetMatch}\label{wxregexgetmatch}
 | 
						|
 | 
						|
\constfunc{bool}{GetMatch}{\param{size\_t* }{start}, \param{size\_t* }{len}, \param{size\_t }{index = 0}}
 | 
						|
 | 
						|
Get the start index and the length of the match of the expression
 | 
						|
(if {\it index} is $0$) or a bracketed subexpression ({\it index} different
 | 
						|
from $0$).
 | 
						|
 | 
						|
May only be called after successful call to \helpref{Matches()}{wxregexmatches} 
 | 
						|
and only if {\tt wxRE\_NOSUB} was {\bf not} used in 
 | 
						|
\helpref{Compile()}{wxregexcompile}.
 | 
						|
 | 
						|
Returns {\tt FALSE} if no match or if an error occured.
 | 
						|
 | 
						|
\constfunc{wxString}{GetMatch}{\param{const wxString\& }{text}, \param{size\_t }{index = 0}}
 | 
						|
 | 
						|
Returns the part of string corresponding to the match where {\it index} is
 | 
						|
interpreted as above. Empty string is returned if match failed
 | 
						|
 | 
						|
May only be called after successful call to \helpref{Matches()}{wxregexmatches} 
 | 
						|
and only if {\tt wxRE\_NOSUB} was {\bf not} used in 
 | 
						|
\helpref{Compile()}{wxregexcompile}.
 | 
						|
 | 
						|
\membersection{wxRegEx::Matches}\label{wxregexmatches}
 | 
						|
 | 
						|
\constfunc{bool}{Matches}{\param{const wxChar* }{text}, \param{int }{flags = 0}}
 | 
						|
 | 
						|
Matches the precompiled regular expression against the string {\it text},
 | 
						|
returns {\tt TRUE} if matches and {\tt FALSE} otherwise.
 | 
						|
 | 
						|
Flags may be combination of {\tt wxRE\_NOTBOL} and {\tt wxRE\_NOTEOL}.
 | 
						|
 | 
						|
May only be called after successful call to \helpref{Compile()}{wxregexcompile}.
 | 
						|
 | 
						|
\membersection{wxRegEx::Replace}\label{wxregexreplace}
 | 
						|
 | 
						|
\constfunc{int}{Replace}{\param{wxString* }{text}, \param{const wxString\& }{replacement}, \param{size\_t }{maxMatches = 0}}
 | 
						|
 | 
						|
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 $\backslash$number} which will be
 | 
						|
replaced with the value of the corresponding subexpression in the
 | 
						|
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
 | 
						|
it to $1$, for example, will only replace first occurrence (if any) of the
 | 
						|
pattern in the text while default value of $0$ means replace all.
 | 
						|
 | 
						|
\membersection{wxRegEx::ReplaceAll}\label{wxregexreplaceall}
 | 
						|
 | 
						|
\constfunc{int}{ReplaceAll}{\param{wxString* }{text}, \param{const wxString\& }{replacement}}
 | 
						|
 | 
						|
Replace all occurrences: this is actually a synonym for 
 | 
						|
\helpref{Replace()}{wxregexreplace}.
 | 
						|
 | 
						|
\wxheading{See also}
 | 
						|
 | 
						|
\helpref{ReplaceFirst}{wxregexreplacefirst}
 | 
						|
 | 
						|
\membersection{wxRegEx::ReplaceFirst}\label{wxregexreplacefirst}
 | 
						|
 | 
						|
\constfunc{int}{ReplaceFirst}{\param{wxString* }{text}, \param{const wxString\& }{replacement}}
 | 
						|
 | 
						|
Replace the first occurrence.
 | 
						|
 | 
						|
\wxheading{See also}
 | 
						|
 | 
						|
\helpref{Replace}{wxregexreplace}
 | 
						|
 |