0

我有一个文件,每一行都有一个 .

<div style="random properties" id="keyword1:string id:int">text</div>
<div style="random properties" id="keyword1:string id:int">text</div>
<div style="random properties" id="keyword2:string id:int">text</div>
<div style="random properties" id="keyword2:string id:int">text</div>

我可以使用 fscanf 返回匹配关键字 1 和关键字 2 的文本和 ID 列表吗?

4

1 回答 1

1

您可以使用正则表达式简单地阅读它:

std::string s;
std::regex r( "<div style=\"[^\"]*\" id=\".*(\\d+)\">((?:(?!</div>).)*)</div>" );
while( std::getline(in, s) ) {
    std::smatch m;
    if( std::regex_match(s, m, r) ) {
        std::cout << "id = " << m.str(1) << ", text = " << m.str(2) << std::endl;
    } else {
        std::cout << "invalid pattern" << std::endl;
    }
}

但如果您想了解更多信息,regex请访问http://en.cppreference.com/w/cpp/regex

于 2012-10-17T23:02:44.590 回答