Opened 19 years ago
Closed 19 years ago
#195 closed Support Requests (Invalid)
regex_match problem
Reported by: | nobody | Owned by: | nobody |
---|---|---|---|
Milestone: | Component: | None | |
Version: | None | Severity: | |
Keywords: | Cc: |
Description
Ruslan Talpa <tristan@pisem.net> I want to match different strings in a whois result and i am having some problems. first a execut a shell command similar to: "/usr/bin/whois domain.com > tmp_file" so after this we have a file, from wich i read line by line and try to match some strings but no matter what the reg. expression is the regex_match returns false. i even tried "regex expression("a");" and still no luck The only thing i can think of is that there is some character encoding stuff envolved but i don't know what to do. Please help, tell me what i am doin wrong here are the functions involved int parse_line(const char* response) { regex expression("a"); cmatch what; if(regex_match(response, what, expression)) { cout << "MATCH\n"; } else { cout << "NO MATCH\n"; } return 0; } int get_info(string domain, char* pipe_file) { string line; Message msg; strstream command; command << "/usr/bin/whois " << domain.c_str() << " > " << pipe_file; system(command.str()); ifstream f(pipe_file); while (!f.eof()) { getline(f, line); parse_line(line.c_str()); } f.close(); return 0; }
Change History (3)
comment:2 by , 19 years ago
Logged In: YES user_id=536454 The problem is that you're using the wrong algorithm - regex_match only returns true on an exact match, i.e. in your example, the input string would need to be exactly "a" to be a match. What you probably want is to use the algorithm regex_search. By the way, we normally answer this type of questions on the Boost-Users mailing list (http://groups.yahoo.com/group/Boost-Users/). See the Boost homepage (www.boost.org) for more details. Hope this helps, Bjorn Karlsson bjorn_karlsson@acm.org
comment:3 by , 19 years ago
Status: | assigned → closed |
---|
Note:
See TracTickets
for help on using tickets.