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

How to ignore backslash character in boost::regex_search() function?

本文关键字:函数 字符 boost 何忽略 regex search      更新时间:2023-10-16

我正在研究C++,我从xml文件中得到了一个正则表达式。我必须在一长串中搜索这个正则表达式。例如,我的正则表达式是:".+myFunction"

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

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

那么如何在使用该功能时忽略反斜杠字符boost::regex_search()呢?

示例代码如下:

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;
}

你问的不是很清楚:

  • 在XML中,'".+myFunction"是完全合法的。

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

  • 如果您尝试定义与除换行符以外的一个或多个字符的序列,后跟序列"myFunction",用于初始化正则表达式将".+myFunction"