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
 Iterator class to iterator 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()

static 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()

static 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()

static 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()

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

765{
766 Match match;
767 return re.match(str,match,0) && match.position()==0 && match.length()==str.length();
768}
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:706
Object representing the matching results.
Definition regex.h:153
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:759

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

760{
761 return re.match(str,match,0) && match.position()==0 && match.length()==str.length();
762}

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

Referenced by dateTimeFromString(), endBrief(), genericPatternMatch(), getFilterFromList(), DocParser::handleStyleArgument(), VhdlDocGen::isNumber(), reg::Ex::match(), match(), match(), replace(), search(), search(), and setOutput().

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

771{
772 std::string result;
773 Match match;
774 size_t p=0;
775 while (re.match(str,match,p))
776 {
777 size_t i=match.position();
778 size_t l=match.length();
779 if (i>p) result+=str.substr(p,i-p);
780 result+=replacement;
781 p=i+l;
782 }
783 if (p<str.length()) result+=str.substr(p);
784 return result;
785}

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

754{
755 Match match;
756 return re.match(str,match,pos);
757}

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();
}
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:748

produces:

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

Definition at line 748 of file regex.cpp.

749{
750 return re.match(str,match,pos);
751}

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

Referenced by HtmlHelpIndex::addItem(), addValidAliasToMap(), 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()

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

Definition at line 649 of file regex.cpp.

650{
651 std::string result="^"; // match start of input
652 result.reserve(pattern.length());
653 for (size_t i=0;i<pattern.length();i++)
654 {
655 char c=pattern[i];
656 switch(c)
657 {
658 case '*':
659 result+=".*";
660 break; // '*' => '.*'
661 case '?':
662 result+='.';
663 break; // '?' => '.'
664 case '.':
665 case '+':
666 case '\\':
667 case '$':
668 case '^':
669 case '(':
670 case ')':
671 result+='\\'; result+=c; // escape
672 break;
673 case '[':
674 if (i<pattern.length()-1 && pattern[i+1]=='^') // don't escape ^ after [
675 {
676 result+="[^";
677 i++;
678 }
679 else
680 {
681 result+=c;
682 }
683 break;
684 default: // just copy
685 result+=c;
686 break;
687 }
688 }
689 result+='$'; // match end of input
690 return result;
691}