BUG: Fixed STRING(REGEX REPLACE ...) and added better test.

This commit is contained in:
Brad King 2002-11-06 18:05:39 -05:00
parent 42c464c05e
commit 6ab16695d0
4 changed files with 17 additions and 14 deletions

View File

@ -254,7 +254,7 @@ bool cmStringCommand::RegexReplace(std::vector<std::string> const& args)
std::string::size_type r = re.end();
// Concatenate the part of the input that was not matched.
output += input.substr(base, l-base);
output += input.substr(base, l);
// Make sure the match had some text.
if(r-l == 0)
@ -282,7 +282,7 @@ bool cmStringCommand::RegexReplace(std::vector<std::string> const& args)
if((start != std::string::npos) && (end != std::string::npos) &&
(start >= 0) && (start <= len) && (end >= 0) && (end <= len))
{
output += input.substr(base+l, r-l);
output += input.substr(base+start, end-start);
}
else
{

View File

@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT)
STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde")
IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1)
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED)
MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.")
MESSAGE(SEND_ERROR
"STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED)
#

View File

@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT)
STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde")
IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1)
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED)
MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.")
MESSAGE(SEND_ERROR
"STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED)
#

View File

@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT)
STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde")
IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1)
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$")
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED)
MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.")
MESSAGE(SEND_ERROR
"STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED)
#