4

Where can I find the documentation about QGIS regular expression engine and how to craft a pattern with it. I see the following regex functions documented

  • regexp_replace
  • regexp_substr
  • regexp_matches
  • regexp_match
8

QGIS, uses QT's QRegularExpression. which is itself just PCRE.

QRegularExpression implements Perl-compatible regular expressions. It fully supports Unicode. For an overview of the regular expression syntax supported by QRegularExpression, please refer to the aforementioned pcrepattern(3) man page. A regular expression is made up of two things: a pattern string and a set of pattern options that change the meaning of the pattern string.

You can see the use of it in src/core/qgsexpression.cpp

Note one Gotcha with the QT C++ implementation is that you have to escape \,

Note that due to C++ literal strings rules, you must escape all backslashes inside the pattern string with another backslash:

// matches two digits followed by a space and a word
QRegularExpression re("\\d\\d \\w+");

// matches a backslash
QRegularExpression re2("\\\\");

Another but very minor non-gotcha, is

QRegularExpression does not support all the features available in Perl-compatible regular expressions. The most notable one is the fact that duplicated names for capturing groups are not supported, and using them can lead to undefined behaviour.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.