MantisBT - CMake
View Issue Details
0013790CMakeCMakepublic2012-12-13 13:482016-06-10 14:31
mwoehlke 
Kitware Robot 
normalminoralways
closedmoved 
CMake 2.8.9 
 
0013790: regex replace does not allow anchored empty matches
string(REGEX REPLACE) fails with error 'string sub-command REGEX, mode REPLACE regex <pattern> matched an empty string.' when the regular expression is anchored. Since the position of the match is non-ambiguous when an anchor is present, the replace should succeed, even if the substring being replaced is empty. (Other tools, e.g. sed, are able to do this.)
set(FOO foo)
string(REGEX REPLACE "$" "_suffix" BAR "${FOO}")

(Expected result: BAR contains "foo_suffix")
The above example is contrived for the sake of simplification. An actual use case might be replacing an existing prefix/suffix that matches a regular expression and may or may not be present.
No tags attached.
Issue History
2012-12-13 13:48mwoehlkeNew Issue
2012-12-13 13:56David ColeNote Added: 0031878
2016-06-10 14:28Kitware RobotNote Added: 0042170
2016-06-10 14:28Kitware RobotStatusnew => resolved
2016-06-10 14:28Kitware RobotResolutionopen => moved
2016-06-10 14:28Kitware RobotAssigned To => Kitware Robot
2016-06-10 14:31Kitware RobotStatusresolved => closed

Notes
(0031878)
David Cole   
2012-12-13 13:56   
An easy workaround, if you would like one before this bug gets fixed, is to match the whole string and append the suffix:

  string(REGEX REPLACE "^(.*)$" "\\1_suffix" BAR "${FOO}")
(0042170)
Kitware Robot   
2016-06-10 14:28   
Resolving issue as `moved`.

This issue tracker is no longer used. Further discussion of this issue may take place in the current CMake Issues page linked in the banner at the top of this page.