Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TPMERegexp Class Reference

Wrapper for PCRE library (Perl Compatible Regular Expressions).

Based on PME - PCRE Made Easy by Zachary Hansen.

Supports main Perl operations using regular expressions (Match, Substitute and Split). To retrieve the results one can simply use operator[] returning a TString.

See $ROOTSYS/tutorials/regexp_pme.C for examples.

Definition at line 97 of file TPRegexp.h.

Public Member Functions

 TPMERegexp ()
 Default constructor. This regexp will match an empty string.
 
 TPMERegexp (const TPMERegexp &r)
 Copy constructor.
 
 TPMERegexp (const TString &s, const TString &opts="", Int_t nMatchMax=10)
 Constructor.
 
 TPMERegexp (const TString &s, UInt_t opts, Int_t nMatchMax=10)
 Constructor.
 
virtual ~TPMERegexp ()
 
void AssignGlobalState (const TPMERegexp &re)
 Copy global-match state from 're; so that this regexp can continue parsing the string from where 're' left off.
 
Int_t GetGlobalPosition () const
 
Int_t GetNMaxMatches () const
 
TClassIsA () const override
 
Int_t Match (const TString &s, UInt_t start=0)
 Runs a match on s against the regex 'this' was created with.
 
Int_t NMatches () const
 
TString operator[] (Int_t)
 Returns the sub-string from the internal fMarkers vector.
 
virtual void Print (Option_t *option="")
 Print the regular expression and modifier options.
 
void Reset (const TString &s, const TString &opts="", Int_t nMatchMax=-1)
 Reset the pattern and options.
 
void Reset (const TString &s, UInt_t opts, Int_t nMatchMax=-1)
 Reset the pattern and options.
 
void ResetGlobalState ()
 Reset state of global match.
 
void SetNMaxMatches (Int_t nm)
 
Int_t Split (const TString &s, Int_t maxfields=0)
 Splits into at most maxfields.
 
void Streamer (TBuffer &) override
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
Int_t Substitute (TString &s, const TString &r, Bool_t doDollarSubst=kTRUE)
 Substitute matching part of s with r, dollar back-ref substitution is performed if doDollarSubst is true (default).
 

Static Public Member Functions

static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 

Protected Attributes

void * fAddressOfLastString
 
Int_t fLastGlobalPosition
 
TString fLastStringMatched
 
TArrayI fMarkers
 
Int_t fNMatches
 
Int_t fNMaxMatches
 
- Protected Attributes inherited from TPRegexp
TString fPattern
 
UInt_t fPCREOpts
 
PCREPriv_tfPriv
 

Private Member Functions

TPMERegexpoperator= (const TPMERegexp &)=delete
 

Additional Inherited Members

- Protected Types inherited from TPRegexp
enum  { kPCRE_GLOBAL = 0x80000000 , kPCRE_OPTIMIZE = 0x40000000 , kPCRE_DEBUG_MSGS = 0x20000000 , kPCRE_INTMASK = 0x0FFF }
 
- Protected Member Functions inherited from TPRegexp
void Compile ()
 Compile the fPattern.
 
Int_t MatchInternal (const TString &s, Int_t start, Int_t nMaxMatch, TArrayI *pos=nullptr) const
 Perform the actual matching - protected method.
 
void Optimize ()
 Send the pattern through the optimizer.
 
UInt_t ParseMods (const TString &mods) const
 Translate Perl modifier flags into pcre flags.
 
Int_t ReplaceSubs (const TString &s, TString &final, const TString &replacePattern, Int_t *ovec, Int_t nmatch) const
 Returns the number of expanded '$' constructs.
 
Int_t SubstituteInternal (TString &s, const TString &replace, Int_t start, Int_t nMaxMatch0, Bool_t doDollarSubst) const
 Perform pattern substitution with optional back-ref replacement.
 
 TPRegexp ()
 Default ctor.
 
 TPRegexp (const TPRegexp &p)
 Copy ctor.
 
 TPRegexp (const TString &pat)
 Create and initialize with pat.
 
virtual ~TPRegexp ()
 Cleanup.
 
TString GetModifiers () const
 Return PCRE modifier options as string.
 
TString GetPattern () const
 
Bool_t IsValid () const
 Returns true if underlying PCRE structure has been successfully generated via regexp compilation.
 
Int_t Match (const TString &s, const TString &mods="", Int_t start=0, Int_t nMaxMatch=10, TArrayI *pos=nullptr)
 The number of matches is returned, this equals the full match + sub-pattern matches.
 
Bool_t MatchB (const TString &s, const TString &mods="", Int_t start=0, Int_t nMaxMatch=10)
 
TObjArrayMatchS (const TString &s, const TString &mods="", Int_t start=0, Int_t nMaxMatch=10)
 Returns a TObjArray of matched substrings as TObjString's.
 
TPRegexpoperator= (const TPRegexp &p)
 Assignment operator.
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
Int_t Substitute (TString &s, const TString &replace, const TString &mods="", Int_t start=0, Int_t nMatchMax=10)
 Substitute replaces the string s by a new string in which matching patterns are replaced by the replacePattern string.
 
- Static Protected Member Functions inherited from TPRegexp
static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Bool_t GetThrowAtCompileError ()
 Get value of static flag controlling whether exception should be thrown upon an error during regular expression compilation by the PCRE engine.
 
static void SetThrowAtCompileError (Bool_t throwp)
 Set static flag controlling whether exception should be thrown upon an error during regular expression compilation by the PCRE engine.
 
- Static Protected Attributes inherited from TPRegexp
static Bool_t fgThrowAtCompileError = kFALSE
 

#include <TPRegexp.h>

Inheritance diagram for TPMERegexp:
[legend]

Constructor & Destructor Documentation

◆ TPMERegexp() [1/4]

TPMERegexp::TPMERegexp ( )

Default constructor. This regexp will match an empty string.

Definition at line 586 of file TPRegexp.cxx.

◆ TPMERegexp() [2/4]

TPMERegexp::TPMERegexp ( const TString s,
const TString opts = "",
Int_t  nMatchMax = 10 
)

Constructor.

Parameters
[in]sstring to compile into regular expression
[in]optsperl-style character flags to be set on TPME object
[in]nMatchMaxmaximum number of matches

Definition at line 603 of file TPRegexp.cxx.

◆ TPMERegexp() [3/4]

TPMERegexp::TPMERegexp ( const TString s,
UInt_t  opts,
Int_t  nMatchMax = 10 
)

Constructor.

Parameters
[in]sstring to compile into regular expression
[in]optsPCRE-style option flags to be set on TPME object
[in]nMatchMaxmaximum number of matches

Definition at line 621 of file TPRegexp.cxx.

◆ TPMERegexp() [4/4]

TPMERegexp::TPMERegexp ( const TPMERegexp r)

Copy constructor.

Only PCRE specifics are copied, not last-match or global-match information.

Definition at line 637 of file TPRegexp.cxx.

◆ ~TPMERegexp()

virtual TPMERegexp::~TPMERegexp ( )
inlinevirtual

Definition at line 118 of file TPRegexp.h.

Member Function Documentation

◆ AssignGlobalState()

void TPMERegexp::AssignGlobalState ( const TPMERegexp re)

Copy global-match state from 're; so that this regexp can continue parsing the string from where 're' left off.

Alternatively, GetGlobalPosition() get be used to retrieve the last match position so that it can passed to Match().

Ideally, as it is done in PERL, the last match position would be stored in the TString itself.

Definition at line 682 of file TPRegexp.cxx.

◆ Class()

static TClass * TPMERegexp::Class ( )
static
Returns
TClass describing this class

◆ Class_Name()

static const char * TPMERegexp::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

static constexpr Version_t TPMERegexp::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 139 of file TPRegexp.h.

◆ DeclFileName()

static const char * TPMERegexp::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 139 of file TPRegexp.h.

◆ GetGlobalPosition()

Int_t TPMERegexp::GetGlobalPosition ( ) const
inline

Definition at line 126 of file TPRegexp.h.

◆ GetNMaxMatches()

Int_t TPMERegexp::GetNMaxMatches ( ) const
inline

Definition at line 123 of file TPRegexp.h.

◆ IsA()

TClass * TPMERegexp::IsA ( ) const
inlineoverridevirtual
Returns
TClass describing current object

Reimplemented from TPRegexp.

Definition at line 139 of file TPRegexp.h.

◆ Match()

Int_t TPMERegexp::Match ( const TString s,
UInt_t  start = 0 
)

Runs a match on s against the regex 'this' was created with.

Parameters
[in]sstring to match against
[in]startoffset at which to start matching
Returns
number of matches found

Definition at line 706 of file TPRegexp.cxx.

◆ NMatches()

Int_t TPMERegexp::NMatches ( ) const
inline

Definition at line 134 of file TPRegexp.h.

◆ operator=()

TPMERegexp & TPMERegexp::operator= ( const TPMERegexp )
privatedelete

◆ operator[]()

TString TPMERegexp::operator[] ( Int_t  index)

Returns the sub-string from the internal fMarkers vector.

Requires having run match or split first.

Definition at line 916 of file TPRegexp.cxx.

◆ Print()

void TPMERegexp::Print ( Option_t option = "")
virtual

Print the regular expression and modifier options.

If 'option' contains "all", prints also last string match and match results.

Definition at line 931 of file TPRegexp.cxx.

◆ Reset() [1/2]

void TPMERegexp::Reset ( const TString s,
const TString opts = "",
Int_t  nMatchMax = -1 
)

Reset the pattern and options.

If 'nMatchMax' other than -1 (the default) is passed, it is also set.

Definition at line 651 of file TPRegexp.cxx.

◆ Reset() [2/2]

void TPMERegexp::Reset ( const TString s,
UInt_t  opts,
Int_t  nMatchMax = -1 
)

Reset the pattern and options.

If 'nMatchMax' other than -1 (the default) is passed, it is also set.

Definition at line 660 of file TPRegexp.cxx.

◆ ResetGlobalState()

void TPMERegexp::ResetGlobalState ( )

Reset state of global match.

This happens automatically when a new string is passed for matching. But be carefull, as the address of last TString object is used to make this decision.

Definition at line 694 of file TPRegexp.cxx.

◆ SetNMaxMatches()

void TPMERegexp::SetNMaxMatches ( Int_t  nm)
inline

Definition at line 124 of file TPRegexp.h.

◆ Split()

Int_t TPMERegexp::Split ( const TString s,
Int_t  maxfields = 0 
)

Splits into at most maxfields.

If maxfields is unspecified or 0, trailing empty matches are discarded. If maxfields is positive, no more than maxfields fields will be returned and trailing empty matches are preserved. If maxfields is empty, all fields (including trailing empty ones) are returned. This should be the same as the perl behaviour.

If pattern produces sub-matches, these are also stored in the result.

A pattern matching the null string will split the value of EXPR into separate characters at each point it matches that way.

Parameters
[in]sstring to split
[in]maxfieldsmaximum number of fields to be split out. 0 means split all fields, but discard any trailing empty bits. Negative means split all fields and keep trailing empty bits. Positive means keep up to N fields including any empty fields less than N. Anything remaining is in the last field.
Returns
number of fields found

Definition at line 763 of file TPRegexp.cxx.

◆ Streamer()

void TPMERegexp::Streamer ( TBuffer )
overridevirtual

Reimplemented from TPRegexp.

◆ StreamerNVirtual()

void TPMERegexp::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 139 of file TPRegexp.h.

◆ Substitute()

Int_t TPMERegexp::Substitute ( TString s,
const TString r,
Bool_t  doDollarSubst = kTRUE 
)

Substitute matching part of s with r, dollar back-ref substitution is performed if doDollarSubst is true (default).

Returns the number of substitutions made.

After the substitution, another pass is made over the resulting string and the following special tokens are interpreted:

  • \l lowercase next char,
  • \u uppercase next char,
  • \L lowercase till \E,
  • \U uppercase till \E, and
  • \E end case modification.

Definition at line 872 of file TPRegexp.cxx.

Member Data Documentation

◆ fAddressOfLastString

void* TPMERegexp::fAddressOfLastString
protected

Definition at line 108 of file TPRegexp.h.

◆ fLastGlobalPosition

Int_t TPMERegexp::fLastGlobalPosition
protected

Definition at line 110 of file TPRegexp.h.

◆ fLastStringMatched

TString TPMERegexp::fLastStringMatched
protected

Definition at line 107 of file TPRegexp.h.

◆ fMarkers

TArrayI TPMERegexp::fMarkers
protected

Definition at line 105 of file TPRegexp.h.

◆ fNMatches

Int_t TPMERegexp::fNMatches
protected

Definition at line 104 of file TPRegexp.h.

◆ fNMaxMatches

Int_t TPMERegexp::fNMaxMatches
protected

Definition at line 103 of file TPRegexp.h.

  • core/base/inc/TPRegexp.h
  • core/base/src/TPRegexp.cxx