我试图用 boost::regex 进行正则表达式替换,但它似乎不起作用。
这是正则表达式:
(\\w+,\\d+,\\d+,\\d+\tscript\t)(.+)(#)(.+)(\t\\d+(,\\d+)?(,\\d+)?,{)
和格式化程序:
$1\"$2\"$3\"$4\"$5
代码:(getInput() 返回一个内容应该匹配的字符串)
std::string &Preprocessor::preprocess()
{
std::string &tempString = getInput();
boost::regex scriptRegexFullName;
const char *scriptRegexFullNameReplace = "$1\"$2\"$3\"$4\"$5";
scriptRegexFullName.assign("(\\w+,\\d+,\\d+,\\d+\tscript\t)(.+)(#)(.+)(\t\\d+(,\\d+)?(,\\d+)?,{)");
tempString = boost::regex_replace(tempString, scriptRegexFullName, scriptRegexFullNameReplace, boost::match_default);
return tempString;
}
当我在这个网站上放置以下测试用例时:
alberta,246,82,3 script Marinheiro#bra2 100,{
brasilis,316,57,3 script Marinheiro#bra1 100,{
brasilis,155,165,3 script Orientação divina#bra1 858,{
该网站的输出是正确的:
alberta,246,82,3 script "Marinheiro"#"bra2" 100,{
brasilis,316,57,3 script "Marinheiro"#"bra1" 100,{
brasilis,155,165,3 script "Orientação divina"#"bra1" 858,{
但是使用 boost::regex 的输出是:
alberta,246,82,3 script "Marinheiro#bra2 100,{
brasilis,316,57,3 script Marinheiro#bra1 100,{
brasilis,155,165,3 script Orientação divina#bra1 858,{
我做错了什么,有人知道吗?
谢谢您的帮助。