我一直试图做几天,但仍然没有得到正确的结果。正则表达式 - 在多行和他们的位置获取多个捕获
我需要从整个字符串(包括换行符)获取所有捕获,但不会在第一次匹配后返回。我有这个正则表达式:(\d+)\s*;
。结果应该只是数字(不是空格和分号),它应该从整个输入字符串(它是多行)中取出它们。
因此,举例来说,从该输入:
5;
6 ;
7;
8 ;
它应该返回 “5”, “6”, “7” 和 “8”。
任何人都知道如何做到这一点在c + +?
谢谢!
编辑:
在评论中提到的链接,我想出了这个代码:
std::regex regex(regex_str, std::regex_constants::icase);
for (std::sregex_iterator it = std::sregex_iterator(input.begin(), input.end(), regex); it != std::sregex_iterator(); ++it)
{
std::smatch m = *it;
std::cout << "\t" << m[1].str() << std::endl;
}
它工作得很好,但有一件事我忘了提:我还需要获得每个捕获的位置。使用m.position()
我可以获得整场比赛的位置,但是如果在我正在寻找的捕获组之前有什么东西,它会告诉我一个错误的位置。那么,我怎样才能获得捕获的位置呢?
请出示你的代码。我相信你可以通过'match_object [1] .str()'来访问捕获的值。 –
要获得多个匹配,有多个方法。看到[这个答案](http://stackoverflow.com/questions/32765512/what-does-stdmatch-resultssize-return/32765645#32765645)为例如如何可以完成。 –