#589 closed Bugs (fixed)
regex_replace bug
Reported by: | nobody | Owned by: | John Maddock |
---|---|---|---|
Milestone: | Component: | regex | |
Version: | None | Severity: | Problem |
Keywords: | Cc: |
Description (last modified by )
boost::tregex e("(.*)"); strResult = boost::regex_replace("a", e, "$1b"); strResult now equals "abb", but should be "ab". My e-mail: kdn01003@student.mdh.se
Change History (7)
comment:2 by , 17 years ago
Status: | assigned → closed |
---|
comment:3 by , 11 years ago
Severity: | → Problem |
---|
I have found this behavior still exists even when using posix basic or extended regexes. While this behavior may be correct for perl regexes it doesn't seem to be correct for posix basic or extended regexes.
std::string s("a"); const boost::regex e("(.*)", boost::regex::extended); std::string result = boost::regex_replace(s, e, "$&b");
The result is "abb"
If I use gnu's sed utility (GNU sed version 4.1.2) instead I get "ab"
echo a | sed -r "s/(.*)/\1b/g"
and gnu's sed utility claims to use posix extended regex expressions when called with the -r option.
comment:4 by , 11 years ago
Resolution: | Invalid |
---|---|
Status: | closed → reopened |
comment:5 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
comment:6 by , 10 years ago
Description: | modified (diff) |
---|
This is now fixed in Trunk provided match_posix is passed to regex_replace or regex_iterator.