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;
    }
}

ただし、詳細については、 http://en.cppreference.com/w/cpp/regexregexにアクセスしてください。

于 2012-10-17T23:02:44.590 に答える