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

52{
53 return isalpha(c) || isdigit(c);
54}
static bool isalpha(char c)
Definition regex.cpp:41
static bool isdigit(char c)
Definition regex.cpp:46

References isalpha(), and isdigit().

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

◆ isalpha()

bool reg::isalpha ( char c)
inlinestatic

Definition at line 41 of file regex.cpp.

42{
43 return static_cast<unsigned char>(c)>=128 || (c>='a' && c<='z') || (c>='A' && c<='Z');
44}

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

◆ isdigit()

bool reg::isdigit ( char c)
inlinestatic

Definition at line 46 of file regex.cpp.

47{
48 return c>='0' && c<='9';
49}

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

◆ isspace()

bool reg::isspace ( char c)
inlinestatic

Definition at line 36 of file regex.cpp.

37{
38 return c==' ' || c=='\t' || c=='\n' || c=='\r';
39}

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

867{
868 Match match;
869 return re.match(str,match,0) && match.position()==0 && match.length()==str.length();
870}
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:808
Object representing the matching results.
Definition regex.h:154
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:861

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

862{
863 return re.match(str,match,0) && match.position()==0 && match.length()==str.length();
864}

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

Referenced by DocParser::checkArgumentName(), dateTimeFromString(), endBrief(), 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 872 of file regex.cpp.

873{
874 std::string result;
875 Match match;
876 size_t p=0;
877 while (re.match(str,match,p))
878 {
879 size_t i=match.position();
880 size_t l=match.length();
881 if (i>p) result+=str.substr(p,i-p);
882 result+=replacement;
883 p=i+l;
884 }
885 if (p<str.length()) result+=str.substr(p);
886 return result;
887}

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

856{
857 Match match;
858 return re.match(str,match,pos);
859}

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

produces:

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

Definition at line 850 of file regex.cpp.

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

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

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

◆ wildcard2regex()

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

Definition at line 751 of file regex.cpp.

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

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