C++ c+中的多行正则表达式模式+;

C++ c+中的多行正则表达式模式+;,c++,regex,c++11,C++,Regex,C++11,我需要的模式,以支持多线。模式取自用户,用户可以将多行字符串作为正则表达式模式包含在内 例如: std::regex re("^"+CWD+"("+path_delim+"[\\s\\S]*|$)"); if(std::regex_search(file,re)){ //do something } CWD变量可以是多行字符串 附言:如果我只需要std::regex就可以解决这个问题,也就是说,如果不是轻量级的,我不想使用任何库。另外,它需要是c++11似乎已经支持多行正则表达式模式。

我需要的模式,以支持多线。模式取自用户,用户可以将多行字符串作为正则表达式模式包含在内

例如:

std::regex re("^"+CWD+"("+path_delim+"[\\s\\S]*|$)");
if(std::regex_search(file,re)){
    //do something
}
CWD
变量可以是多行字符串


附言:如果我只需要
std::regex
就可以解决这个问题,也就是说,如果不是轻量级的,我不想使用任何库。另外,它需要是
c++11

似乎已经支持多行正则表达式模式。我所需要的只是在将变量传递给正则表达式构造函数之前对其进行清理。这是我用来清理字符串以构造有效正则表达式的代码:

String sanitizeRegexString(const String& s){
    std::regex re(R"([\s\S])");
    return std::regex_replace (s,re,"[$&]",std::regex_constants::format_default);
}

上面的函数接受一个字符串,并用
[]
将其所有字符包装起来,因此该字符串不会被解释为正则表达式模式,而是被视为模式内的固定字符串,而其他字符串则与其连接(无需净化)充当正则表达式模式。

当你说CWD是一个多行字符串时,你是什么意思?它需要使用正则表达式语法。是否希望
^
$
匹配行的结尾或字符串的结尾?@将匹配字符串的结尾。@Galik,很好,这意味着在将其传递给正则表达式构造函数之前,我也需要对其进行清理。