On 01/20/2011 02:01 PM, David Cole wrote: > On Thu, Jan 20, 2011 at 7:39 AM, Michael Wild <[email protected]> wrote: > >> On 01/20/2011 12:10 PM, SF Markus Elfring wrote: >>>> Thanks for your help to make CMake better, >>> >>> Is the command variant "string(REGEX REPLACE ...)" completely documented? >>> >>> Can multiple variables be specified that will receive the data from the >>> evaluation of subexpressions in the passed regular expression? >>> >>> Regards, >>> Markus >> >> AFAIK no, but you can "misuse" if(<string|varname> MATCHES <pattern>) >> for this. It stores the groups in CMAKE_MATCH_<n> where <n> is {0..9}. >> Match 0 is always the whole match of <pattern> and match 1 is the >> contains the first group. >> >> Michael >> _______________________________________________ >> Powered by www.kitware.com >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Please keep messages on-topic and check the CMake FAQ at: >> http://www.cmake.org/Wiki/CMake_FAQ >> >> Follow this link to subscribe/unsubscribe: >> http://www.cmake.org/mailman/listinfo/cmake >> > > > I think it's the case that the CMAKE_MATCH_* variables are set after *any* > regex matching operation, be it from an "if(... MATCHES ...)" or a > "string(REGEX" or "string(MATCH" command. Let us know if you find that not > to be true. > > From the bottom of ( > http://cmake.org/cmake/help/cmake-2-8-docs.html#command:string ) : > > () Saves a matched subexpression, which can be referenced > in the REGEX REPLACE operation. Additionally it is saved > by all regular expression-related commands, including > e.g. if( MATCHES ), in the variables CMAKE_MATCH_(0..9). > > > HTH, > David >
Ah, yes. I keep forgetting. Might I propose that the documentation about regular expressions be extracted into its own section and then be referenced from all commands that have a REGEX mode? Because, confusingly, the only documentation about regular expression is at the end of the string(REGEX REPLACE) command, but then uses if(... MATCHES ...) as an example. For the reader of the if( MATCHES ) documentation, this isn't very discoverable, it doesn't even refer him to the string(REGEX REPLACE) command. Michael _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake
