0

含む

#include <fstream>
#include <string>
#include<string>
#include<boost/algorithm/string.hpp>
#include<boost/regex.hpp>
#include <boost/algorithm/string/trim.hpp>
using namespace std;
using namespace boost;


int main() {
    string robotsfile="User-Agent: *"
            "Disallow: /";

    regex exrp( "^Disallow:(.*)$");

            match_results<string::const_iterator> what;

            if( regex_search( robotsfile, what, exrp ) )

            {

                string s( what[1].first, what[1].second );


                cout<< s;
            }

    return 0;
}

正規表現の何が問題になっているのか/から、許可されていないパスを取得する必要がありますか?Disallow: /

4

1 に答える 1

5
string robotsfile = "User-Agent: *"
    "Disallow: /";

上記の文字列リテラルは "User-Agent: *Disallow: /" にマージされ、ご想像のとおり改行がありません。正規表現は、文字列が「Disallow」単語で始まる必要があることを示しているため、一致しません。論理的に正しいコードは次のようになります。

string robotsfile = "User-Agent: *\n"
    "Disallow: /";

また

string robotsfile = "User-Agent: *\nDisallow: /";
于 2010-09-20T12:21:57.777 に答える