REGEX REPLACE will replace "this" with "that" in the entire input string, everywhere it matches. If you want to limit it to just the one bit that matches inside the parenthesis, you have to match the entire string, too, so that it will also be replaced. In your example, the \\1 is being set to "Release" and the "/build Release" is being replaced with \\1 in the entire input string. So in effect, you erased the "/build " from in front of it. What you want is to erase the whole string, except for the "Release", right?

This should work:

string(REGEX REPLACE "^.*/build ([A-Za-z]+).*$" "\\1" BUILD_CONFIG
${FOO})

I just added "^.*" at the beginning, and ".*$" at the end, so it matches the entire input string.


Hope this helps,
David C.



-----Original Message-----
From: Braden McDaniel <[email protected]>
To: cmake <[email protected]>
Sent: Sat, Mar 30, 2013 11:10 pm
Subject: [CMake] string(REGEX REPLACE …) syntax problem


I must be Doing It Wrong; but I'm not seeing how...

If I do a REGEX MATCH as follows:

build_command(FOO)
string(REGEX MATCH "/build ([A-Za-z]+)" BUILD_CONFIG ${FOO})
message(STATUS "BUILD_CONFIG = ${BUILD_CONFIG}")


... I get, as expected:

BUILD_CONFIG = /build Release

However, if I use the same expression with REGEX REPLACE:

build_command(FOO)
string(REGEX REPLACE "/build ([A-Za-z]+)" "\\1" BUILD_CONFIG ${FOO})
message(STATUS "BUILD_CONFIG = ${BUILD_CONFIG}")

... BUILD_CONFIG holds the entire build command line rather than just the
configuration name:

BUILD_CONFIG = C:\PROGRA~2\MICROS~1.0\Common7\IDE\devenv.com my.sln
Release
/project ALL_BUILD


How am I misapplying REGEX REPLACE?

--
Braden McDaniel
[email protected]

--

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

--

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