我的第一个问题:)
我有一个正则表达式模式来查找我在日志中寻找的行,但我希望得到这一行的一部分。
模式:
.*127\.0\.0\.1\]\s.*REGISTER\srequest\ssip:.*\.com.*
行:
2014-07-31 15:42:09,110 810310621 [RMI TCP Connection(18)-127.0.0.1] DEBUG - 传入注册请求sip:example.com
我使用boost :: regex来查找该行并且它工作正常但是,我想获得域名或至少它的位置。我应该寻找什么功能?
答案 0 :(得分:0)
以下是使用sregex_iterator的示例:
#include <boost\regex.hpp>
int main()
{
using namespace boost;
std::string example("2014 - 07 - 31 15:42 : 09, 110 810310621[RMI TCP Connection(18) - 127.0.0.1] DEBUG - Incoming REGISTER request sip : example.com");
regex xpr("127\\.0\\.0\\.1\\].+REGISTER\\srequest\\ssip\\s:\\s(.+\\.com)");
for (sregex_iterator it(example.begin(), example.end(), xpr), end; it != end; ++it)
{
smatch m = *it;
std::cout << "Found: \"" << m[1] << '\"' << std::endl;
}
}
请注意,使用std :: regex / sregex_iterator是相同的。