Doxygen
Loading...
Searching...
No Matches
reg Namespace Reference

Namespace for the regular expression functions. More...

Classes

class  Ex
 Class representing a regular expression. More...
class  Iterator
 Class to iterate through matches. More...
class  Match
 Object representing the matching results. More...
class  PToken
 Class representing a token in the compiled regular expression token stream. More...
class  SubMatch
 Object representing the match results of a capture range. More...

Functions

static bool isspace (char c)
static bool isalpha (char c)
static bool isdigit (char c)
static bool isalnum (char c)
static std::string wildcard2regex (std::string_view pattern)
bool search (std::string_view str, Match &match, const Ex &re, size_t pos=0)
 Search in a given string str starting at position pos for a match against regular expression re.
bool search (std::string_view str, const Ex &re, size_t pos=0)
 Search in a given string str starting at position pos for a match against regular expression re.
bool match (std::string_view str, Match &match, const Ex &re)
 Matches a given string str for a match against regular expression re.
bool match (std::string_view str, const Ex &re)
 Matches a given string str for a match against regular expression re.
std::string replace (std::string_view str, const Ex &re, std::string_view replacement)
 Searching in a given input string for parts that match regular expression re and replaces those parts by string replacement.

Detailed Description

Namespace for the regular expression functions.

Function Documentation

◆ isalnum()

bool reg::isalnum ( char c)
inlinestatic

Definition at line 48 of file regex.cpp.

49{
50 return isalpha(c) || isdigit(c);
51}
static bool isalpha(char c)
Definition regex.cpp:38
static bool isdigit(char c)
Definition regex.cpp:43

References isalpha(), and isdigit().

Referenced by reg::Ex::Private::matchAt().

◆ isalpha()

bool reg::isalpha ( char c)
inlinestatic

Definition at line 38 of file regex.cpp.

39{
40 return static_cast<unsigned char>(c)>=128 || (c>='a' && c<='z') || (c>='A' && c<='Z');
41}

Referenced by isalnum(), and reg::Ex::Private::matchAt().

◆ isdigit()

bool reg::isdigit ( char c)
inlinestatic

Definition at line 43 of file regex.cpp.

44{
45 return c>='0' && c<='9';
46}

Referenced by isalnum(), and reg::Ex::Private::matchAt().

◆ isspace()

bool reg::isspace ( char c)
inlinestatic

Definition at line 33 of file regex.cpp.

34{
35 return c==' ' || c=='\t' || c=='\n' || c=='\r';
36}

Referenced by reg::Ex::Private::matchAt().

◆ match() [1/2]

bool reg::match ( std::string_view str,
const Ex & re )

Matches a given string str for a match against regular expression re.

Returns true iff a match was found for the whole string.

Definition at line 860 of file regex.cpp.

861{
862 Match match;
863 return re.match(str,match,0) && match.position()==0 && match.length()==str.length();
864}
bool match(std::string_view str, Match &match, size_t pos=0) const
Check if a given string matches this regular expression.
Definition regex.cpp:802
Object representing the matching results.
Definition regex.h:151
bool match(std::string_view str, Match &match, const Ex &re)
Matches a given string str for a match against regular expression re.
Definition regex.cpp:855

References reg::Ex::match(), and match().

◆ match() [2/2]

bool reg::match ( std::string_view str,
Match & match,
const Ex & re )

Matches a given string str for a match against regular expression re.

Returns true iff a match was found for the whole string. Any capture groups are returned via the match object.

Definition at line 855 of file regex.cpp.

856{
857 return re.match(str,match,0) && match.position()==0 && match.length()==str.length();
858}

References reg::Ex::match(), and match().

Referenced by dateTimeFromString(), endBrief(), genericPatternMatch(), getFilterFromList(), DocParser::handleStyleArgument(), VhdlDocGen::isNumber(), match(), match(), replace(), search(), search(), and LayoutParser::startLayout().

◆ replace()

std::string reg::replace ( std::string_view str,
const Ex & re,
std::string_view replacement )

Searching in a given input string for parts that match regular expression re and replaces those parts by string replacement.

Definition at line 866 of file regex.cpp.

867{
868 std::string result;
869 Match match;
870 size_t p=0;
871 while (re.match(str,match,p))
872 {
873 size_t i=match.position();
874 size_t l=match.length();
875 if (i>p) result+=str.substr(p,i-p);
876 result+=replacement;
877 p=i+l;
878 }
879 if (p<str.length()) result+=str.substr(p);
880 return result;
881}

References reg::Ex::match(), and match().

Referenced by VhdlDocGen::addBaseClass(), VHDLOutlineParser::checkInlineCode(), FlowChart::printNode(), and replaceAnonymousScopes().

◆ search() [1/2]

bool reg::search ( std::string_view str,
const Ex & re,
size_t pos = 0 )

Search in a given string str starting at position pos for a match against regular expression re.

Returns true iff a match was found.

Definition at line 849 of file regex.cpp.

850{
851 Match match;
852 return re.match(str,match,pos);
853}

References reg::Ex::match(), and match().

◆ search() [2/2]

bool reg::search ( std::string_view str,
Match & match,
const Ex & re,
size_t pos = 0 )

Search in a given string str starting at position pos for a match against regular expression re.

Returns true iff a match was found. Details of what part of the string has matched is returned via the match object.

An example to show how to match all identifiers in a string.

static reg::Ex re(R"(\a\w*)");
std::string = u8"void(Func是<B_C::Códe42>(42));";
while (reg::search(str,match,re,pos))
{
std::cout << match.str() << std::endl;
pos=match.position()+match.length();
}
Class representing a regular expression.
Definition regex.h:39
bool search(std::string_view str, Match &match, const Ex &re, size_t pos)
Search in a given string str starting at position pos for a match against regular expression re.
Definition regex.cpp:844

produces:

void
Func是
B_C
Códe42
See also
Ex::Ex() for details on the regular expression patterns.

Definition at line 844 of file regex.cpp.

845{
846 return re.match(str,match,pos);
847}

References reg::Ex::match(), and match().

Referenced by HtmlHelpIndex::addItem(), addValidAliasToMap(), addVariable(), addVariableToFile(), VHDLOutlineParser::checkInlineCode(), MemberDefImpl::displayDefinition(), expandAliasRec(), Markdown::Private::extractTitleId(), findFunctionPtr(), findIndex(), MemberDefImpl::getClassDefOfAnonymousType(), FormulaManager::initFromRepository(), insertDimension(), isVarWithConstructor(), loadExtensions(), loadStylesheet(), matchExcludedSymbols(), MarkdownOutlineParser::parseInput(), runQHelpGenerator(), StyleData::setStyle(), simplifyTypeForTable(), splitKnRArg(), StyleData::StyleData(), DotAttributes::updateValue(), MemberDefImpl::writeDeclaration(), and MemberDefImpl::writeDocumentation().

◆ wildcard2regex()

std::string reg::wildcard2regex ( std::string_view pattern)
static

Definition at line 745 of file regex.cpp.

746{
747 std::string result="^"; // match start of input
748 result.reserve(pattern.length());
749 for (size_t i=0;i<pattern.length();i++)
750 {
751 char c=pattern[i];
752 switch(c)
753 {
754 case '*':
755 result+=".*";
756 break; // '*' => '.*'
757 case '?':
758 result+='.';
759 break; // '?' => '.'
760 case '.':
761 case '+':
762 case '\\':
763 case '$':
764 case '^':
765 case '(':
766 case ')':
767 result+='\\'; result+=c; // escape
768 break;
769 case '[':
770 if (i<pattern.length()-1 && pattern[i+1]=='^') // don't escape ^ after [
771 {
772 result+="[^";
773 i++;
774 }
775 else
776 {
777 result+=c;
778 }
779 break;
780 default: // just copy
781 result+=c;
782 break;
783 }
784 }
785 result+='$'; // match end of input
786 return result;
787}

Referenced by reg::Ex::Ex().