Boost Regex - Specify multiple expressions and formats with regex_replace?

Dear Regex Users: I'd like to know if it is possible to check multiple expressions and specify multiple patters within a single regex_replace statement. For example, I want to replace .html extensions with .php and replace .gif with the .srf extension Match: http://localhost/index.gif replace with: http://localhost/index.srf Match: http://localhost/index.html replace with: http://localhost/index.php Can this be done within a single regex_replace statement? Although this does not work, it demonstrates what I am trying to achieve: // trying to match either condition const boost::regex sExp("(?:^(.*/)index\.html$) | (?:^(.*/)index\.gif$)"); // trying to replace according to matched extension const std::string sRewrite("$1index.php"); std::string rewrite(const std::string& s) { return boost::regex_replace(s, sExp, sRewrite, boost::match_perl | boost::format_perl | boost::format_no_copy | boost::format_all); } int main() { string s[5] = { "http://localhost/abc.png", "http://localhost/abc.jpb", "http://localhost/index.gif", "http://localhost/hambone.srf", "http://localhost/index.html" }; for(int i = 0; i < 5; ++i) { if (rewrite(s[i])!="") { cout << rewrite(s[i]) << endl; } } return 0; } I don't know if regex_replace can be used to do this or not. Thank you, Jeff

Jeff wrote:
Dear Regex Users:
I'd like to know if it is possible to check multiple expressions and specify multiple patters within a single regex_replace statement. For example, I want to replace .html extensions with .php and replace .gif with the .srf extension
Match: http://localhost/index.gif replace with: http://localhost/index.srf
Match: http://localhost/index.html replace with: http://localhost/index.php
Can this be done within a single regex_replace statement? Although this does not work, it demonstrates what I am trying to achieve:
Yep, use "(.gif)|(.html)" as the expression and "(?1.srf:.php)" as the format string along with the match_flag format_all when calling regex_replace. The ?1 is a conditional replacement: see http://svn.boost.org/svn/boost/trunk/libs/regex/doc/html/boost_regex/format/... HTH, John.
participants (2)
-
Jeff
-
John Maddock