1
在理解正則表達式中的if-then-else條件時遇到一些困難。正則表達式中的if-then-else條件和使用捕獲組
看完If-Then-Else Conditionals in Regular Expressions我決定寫一個簡單的測試。我使用C++,Boost 1.38 Regex和MS VC 8.0。
我寫了這個程序:
#include <iostream>
#include <string>
#include <boost/regex.hpp>
int main()
{
std::string str_to_modify = "123";
//std::string str_to_modify = "ttt";
boost::regex regex_to_search ("(\\d\\d\\d)");
std::string regex_format ("(?($1)$1|000)");
std::string modified_str =
boost::regex_replace(
str_to_modify,
regex_to_search,
regex_format,
boost::match_default | boost::format_all | format_no_copy);
std::cout << modified_str << std::endl;
return 0;
}
我希望得到 「123」,如果str_to_modify
有 「123」,並獲得 「000」 如果我str_to_modify
有 「TTT」。然而,在第一種情況下我得到了?123123 | 000,而第二種情況下沒有。
Coluld你告訴我,請問我的測試出了什麼問題?
仍然無法正常工作的第二個例子:
#include <iostream>
#include <string>
#include <boost/regex.hpp>
int main()
{
//std::string str_to_modify = "123";
std::string str_to_modify = "ttt";
boost::regex regex_to_search ("(\\d\\d\\d)");
std::string regex_format ("(?1foo:bar");
std::string modified_str =
boost::regex_replace(str_to_modify, regex_to_search, regex_format,
boost::match_default | boost::format_all | boost::format_no_copy);
std::cout << modified_str << std::endl;
return 0;
}
謝謝,現在如果'str_to_modify'有「123」,一切正常。但是,如果'str_to_modify'有「ttt」,我仍然沒有得到我的預期。我會發布我的第二個例子。 – 2010-01-13 16:27:45