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 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(), 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 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}
size_t i
Definition htmlgen.cpp:161

References i, 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();
}
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: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(), 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 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}

References i.

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