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

Namespace for the regular expression functions. More...

Classes

class  PToken
 Class representing a token in the compiled regular expression token stream. More...
class  Ex
 Class representing a regular expression. More...
class  SubMatch
 Object representing the match results of a capture range. More...
class  Match
 Object representing the matching results. More...
class  Iterator
 Class to iterate through matches. 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 858 of file regex.cpp.

859{
860 Match match;
861 return re.match(str,match,0) && match.position()==0 && match.length()==str.length();
862}
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:800
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:853

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 853 of file regex.cpp.

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

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

Referenced by dateTimeFromString(), endBrief(), genericPatternMatch(), getFilterFromList(), DocParser::handleStyleArgument(), VhdlDocGen::isNumber(), match(), match(), replace(), search(), search(), setOutput(), 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 864 of file regex.cpp.

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

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 847 of file regex.cpp.

848{
849 Match match;
850 return re.match(str,match,pos);
851}

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:842

produces:

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

Definition at line 842 of file regex.cpp.

843{
844 return re.match(str,match,pos);
845}

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

Referenced by HtmlHelpIndex::addItem(), addValidAliasToMap(), addVariable(), addVariableToFile(), VHDLOutlineParser::checkInlineCode(), containsEnvVar(), 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 743 of file regex.cpp.

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

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