如何在boost :: regex_search()函数中忽略反斜杠字符?

时间:2012-08-13 13:28:21

标签: c++ xml linux boost

我正在使用C ++,我从xml文件中获取正则表达式。我必须在一个长字符串中搜索这个正则表达式。 例如我的正则表达式是:".+myFunction"

因此,如果我必须将此正则表达式放在xml文件中,那么我需要在backslach之前使用'\'字符'.'进行常规表达。 即"\.+myFunction"

现在我正在使用boost::regex_search()函数搜索正则表达式之上。但是由于额外的反斜杠字符,函数返回false。

那么在使用boost::regex_search()函数时如何忽略backslach字符?

示例代码如下:

string longString  = "hdh::dfjdj::dfuhgj::myFunction.devide.and"
string regularExp = "\.+myFunction"
const boost::regex searchPattern(regularExp);
if(boost::regex_search(longString, searchPattern))
{
    cout <<"Regular expresssion is found" << std::endl;
}

1 个答案:

答案 0 :(得分:0)

你问的是什么并不太清楚:

  • 在XML中,“。+ myFunction”是完全合法的。

  • 如果你想要匹配那个确切的序列,你需要逃脱 反斜杠两次:一次因为它在a中有特殊含义 字符串文字,第二次因为它具有特殊含义 常用表达。如果,你还需要逃避报价 它们是您正在寻找的一部分:"\"\\\\.+myFunction\""。 但是如果你想要匹配一个确切的序列,你就不需要了 正则表达式:std::search基本上足够了。

  • 如果您正在尝试定义与a匹配的正则表达式 除换行符之外的一个或多个字符的序列,后跟 序列"myFunction",用于初始化的字符串文字 正则表达式为".+myFunction"

相关问题