3f66f6a5b3
This keyword is not expanded by Git which means it's not replaced with the correct revision value in the releases made using git-based scripts and it's confusing to have lines with unexpanded "$Id$" in the released files. As expanding them with Git is not that simple (it could be done with git archive and export-subst attribute) and there are not many benefits in having them in the first place, just remove all these lines. If nothing else, this will make an eventual transition to Git simpler. Closes #14487. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
165 lines
5.3 KiB
C++
165 lines
5.3 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/regex.h
|
|
// Purpose: regular expression matching
|
|
// Author: Karsten Ballueder
|
|
// Modified by: VZ at 13.07.01 (integrated to wxWin)
|
|
// Created: 05.02.2000
|
|
// Copyright: (c) 2000 Karsten Ballueder <ballueder@gmx.net>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_REGEX_H_
|
|
#define _WX_REGEX_H_
|
|
|
|
#include "wx/defs.h"
|
|
|
|
#if wxUSE_REGEX
|
|
|
|
#include "wx/string.h"
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// constants
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// flags for regex compilation: these can be used with Compile()
|
|
enum
|
|
{
|
|
// 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,
|
|
|
|
// 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
|
|
};
|
|
|
|
// flags for regex matching: these can be used with Matches()
|
|
//
|
|
// these flags are mainly useful when doing several matches in a long string,
|
|
// they can be used to prevent erroneous matches for '^' and '$'
|
|
enum
|
|
{
|
|
// '^' doesn't match at the start of line
|
|
wxRE_NOTBOL = 32,
|
|
|
|
// '$' doesn't match at the end of line
|
|
wxRE_NOTEOL = 64
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxRegEx: a regular expression
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_FWD_BASE wxRegExImpl;
|
|
|
|
class WXDLLIMPEXP_BASE wxRegEx
|
|
{
|
|
public:
|
|
// default ctor: use Compile() later
|
|
wxRegEx() { Init(); }
|
|
|
|
// create and compile
|
|
wxRegEx(const wxString& expr, int flags = wxRE_DEFAULT)
|
|
{
|
|
Init();
|
|
(void)Compile(expr, flags);
|
|
}
|
|
|
|
// return true if this is a valid compiled regular expression
|
|
bool IsValid() const { return m_impl != NULL; }
|
|
|
|
// compile the string into regular expression, return true if ok or false
|
|
// if string has a syntax error
|
|
bool Compile(const wxString& pattern, int flags = wxRE_DEFAULT);
|
|
|
|
// matches the precompiled regular expression against a string, return
|
|
// true if matches and false otherwise
|
|
//
|
|
// flags may be combination of wxRE_NOTBOL and wxRE_NOTEOL
|
|
// len may be the length of text (ignored by most system regex libs)
|
|
//
|
|
// may only be called after successful call to Compile()
|
|
bool Matches(const wxString& text, int flags = 0) const;
|
|
bool Matches(const wxChar *text, int flags, size_t len) const
|
|
{ return Matches(wxString(text, len), flags); }
|
|
|
|
// get the start index and the length of the match of the expression
|
|
// (index 0) or a bracketed subexpression (index != 0)
|
|
//
|
|
// may only be called after successful call to Matches()
|
|
//
|
|
// return false if no match or on error
|
|
bool GetMatch(size_t *start, size_t *len, size_t index = 0) const;
|
|
|
|
// return the part of string corresponding to the match, empty string is
|
|
// returned if match failed
|
|
//
|
|
// may only be called after successful call to Matches()
|
|
wxString GetMatch(const wxString& text, size_t index = 0) const;
|
|
|
|
// return 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 Compile()
|
|
size_t GetMatchCount() const;
|
|
|
|
// replaces the current regular expression in the string pointed to by
|
|
// pattern, with the text in replacement and return number of matches
|
|
// replaced (maybe 0 if none found) or -1 on error
|
|
//
|
|
// the replacement text may contain backreferences (\number) which will be
|
|
// replaced with the value of the corresponding subexpression in the
|
|
// pattern match
|
|
//
|
|
// 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
|
|
int Replace(wxString *text, const wxString& replacement,
|
|
size_t maxMatches = 0) const;
|
|
|
|
// replace the first occurrence
|
|
int ReplaceFirst(wxString *text, const wxString& replacement) const
|
|
{ return Replace(text, replacement, 1); }
|
|
|
|
// replace all occurrences: this is actually a synonym for Replace()
|
|
int ReplaceAll(wxString *text, const wxString& replacement) const
|
|
{ return Replace(text, replacement, 0); }
|
|
|
|
// dtor not virtual, don't derive from this class
|
|
~wxRegEx();
|
|
|
|
private:
|
|
// common part of all ctors
|
|
void Init();
|
|
|
|
// the real guts of this class
|
|
wxRegExImpl *m_impl;
|
|
|
|
// as long as the class wxRegExImpl is not ref-counted,
|
|
// instances of the handle wxRegEx must not be copied.
|
|
wxRegEx(const wxRegEx&);
|
|
wxRegEx &operator=(const wxRegEx&);
|
|
};
|
|
|
|
#endif // wxUSE_REGEX
|
|
|
|
#endif // _WX_REGEX_H_
|
|
|