On 01/20/2011 02:01 PM, David Cole wrote:
> On Thu, Jan 20, 2011 at 7:39 AM, Michael Wild <them...@gmail.com> 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

Reply via email to