0

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

所以如果我必须把这个正则表达式放在 xml 文件中,那么我需要在上面的正则表达式中使用backslach字符。IE'\''.'"\.+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;
}
4

1 回答 1

0

你在问什么并不是很清楚:

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

  • 如果您尝试匹配该精确序列,则需要两次转义反斜杠:一次是因为它在字符串文字中具有特殊含义,第二次是因为它对正则表达式具有特殊含义。如果引号是您要查找的内容的一部分,您还需要转义引号:"\"\\\\.+myFunction\"". 但是如果你想匹配一个精确的序列,你不需要正则表达式:std::search在很大程度上就足够了。

  • 如果您尝试定义一个正则表达式,该正则表达式匹配一个或多个字符的序列,而不是换行符,后跟 sequence "myFunction",初始化正则表达式的字符串文字将是".+myFunction".

于 2012-08-13T14:38:08.703 回答