I have a string in a variable that I want to match literally as a regular expression. I want any special regex characters to be interpreted literally. In most environments there’s a “regex quote” operation that transforms a literal string into a corresponding regex. Do we have that for CMake?
CMake supports lua-style bracket syntax as an alternative to quoting with "
characters: https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#bracket-argument
I know about that feature, but I don’t see how it helps. If I understand that feature correctly, it’s a syntax for string literals. But as I wrote above, I don’t have a literal, I have a string in a variable that I want to match literally using one of the functions that takes a regex argument. if the string in that variable happens to contain a *
, for example, I want it to match a *
rather than being treated as a quantifier. I am looking for a function that knows about the special regex characters and escapes them so they will be interpreted literally, e.g. it replaces *
with [*]
or \*
in the string.
To my knowledge, CMake does not provide anything to do what you’re asking.
[Quoting metacharacters](perlre - Perl regular expressions - Perldoc Browser metacharacters)
See a common idiom to disable or quote the special meanings of regular expression metacharacters in a string that you want to use for a pattern. Simply quote all non-“word” characters.