我需要从磁盘解析一个txt文件。因此,我首先举一个例子来测试正则表达式。
这是我的示例代码:
std::string txt("paragraph:\r\nthis is the text file\r\ni need only this data\r\nnotthis");
std::smatch m;
std::regex rt("paragraph:([\\S\\s](?=notthis))");
std::regex_search(txt, m, rt);
std::cout << m.str(1) << std::endl;
因此,我尝试解析到notthis
,但返回的匹配m是失败的匹配。如果我这样进行正则表达式:std::regex rt("paragraph:([\\S\\s]+)");
可以正常工作,但是我得到了全文:
this is the text file
i need only this data
notthis
我以前没有使用过很多正则表达式,但是有人告诉我c ++使用ecmascript语法,但是在文档中,前瞻模式似乎是相同的,并且仅不支持lookbehinds。如何在电子书稿中进行前瞻?
答案 0 :(得分:1)
用法如下:
#include <iostream>
#include <string>
#include <regex>
int main()
{
std::string txt("paragraph:\r\nthis is the text file\r\ni need only this data\r\nnotthis");
std::smatch m;
std::regex rt("paragraph:([\\S\\s]+(?=notthis))");
std::regex_search(txt, m, rt);
std::cout << m.str(1) << std::endl;
}