繁体   English   中英

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

[英]multiline regex pattern in c++

我需要模式来支持多行。 该模式来自用户,他们能够将多行字符串作为正则表达式模式。

例如:

std::regex re("^"+CWD+"("+path_delim+"[\\s\\S]*|$)");
if(std::regex_search(file,re)){
    //do something
}

CWD变量可以是多行字符串。

PS:最好只使用std::regex来解决这个问题,即如果它不是轻量级的,我不想使用任何库。 另外,它必须是c++11

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

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

上面的函数接受一个字符串,并用[]将其所有字符括起来,因此该字符串不会被解释为regex模式,而是将其视为该模式中的固定字符串,而与其连接的其他字符串(不进行消毒)则用作regex图案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM