我正在使用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;
}
答案 0 :(得分:0)
你问的是什么并不太清楚:
在XML中,“。+ myFunction”是完全合法的。
如果你想要匹配那个确切的序列,你需要逃脱
反斜杠两次:一次因为它在a中有特殊含义
字符串文字,第二次因为它具有特殊含义
常用表达。如果,你还需要逃避报价
它们是您正在寻找的一部分:"\"\\\\.+myFunction\""
。
但是如果你想要匹配一个确切的序列,你就不需要了
正则表达式:std::search
基本上足够了。
如果您正在尝试定义与a匹配的正则表达式
除换行符之外的一个或多个字符的序列,后跟
序列"myFunction"
,用于初始化的字符串文字
正则表达式为".+myFunction"
。