Cosa c'è di sbagliato con questo impulso codice C ++ regex?
-
04-10-2019 - |
Domanda
includere
#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;
}
ho bisogno di ottenere il /
percorso escluso dal Disallow: /
ciò che è sbagliato con il mio regex ??
Soluzione
string robotsfile = "User-Agent: *"
"Disallow: /";
Le stringhe letterali sopra sono fusi in "User-Agent: * Disallow: /" e non v'è alcun ritorno a capo, come si potrebbe pensare. Dal momento che l'espressione regolare afferma che stringa deve iniziare con la parola "Disallow", non corrisponde. Il codice logicamente corretto sarebbe qualcosa di simile a questo:
string robotsfile = "User-Agent: *\n"
"Disallow: /";
o
string robotsfile = "User-Agent: *\nDisallow: /";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow