使用正则表达式,我执行
#include <iostream>
#include <regex>
using namespace std;
int main()
{
string parsed = regex_replace(
"import core\nimport io\n",
(regex) "(^|\r|\n|\r\n)(\\s*)import\\s(.*)\n",
"#include \"$3.h++\"\n");
cout << parsed << endl;
return 0;
}
字符串
我希望输出结果是:
#include "core.h++"
#include "io.h++"
型
但实际上是
#include "core.h++"
import io
型
我哪里做错了?为什么它只取代一个事件?我的正则表达式不好吗?
我试过改变regex_constants中的match_flag_options,但是没有用
1条答案
按热度按时间mctunoxg1#
您的正则表达式有些不必要的复杂,它可能只是
字符串
请注意,我们需要传入
std::regex_constants::multiline
作为构造函数参数,以便^/$
匹配行的开始/结束,而不是整个输入的开始/结束。(Some我对你的正则表达式所做的更改: