Hi. I found some strange behaviors in Regex++.
For details, please see the following source.
These are bugs? or do I have mistaken?
boost's version is 1.29.0.
---
#include <iostream>
#include
using namespace std;
void p(const char *r, const char *s){
cout << endl << "*********" << endl;
cout << "regex: " << r << endl;
cout << "string: " << s << endl;
cout << "result: " <<
(boost::RegEx(r).Search(s) ? "found" : "not found") << endl;
}
int main(){
// I think this must not match, but this do.
p("a\\Z", "a\nb");
// These match. Correct behaviors.
p("()", "abc");
p("^()", "abc");
p("^()+", "abc");
p("^(){1}", "abc");
// But these don't match.
// Are these wrong?
p("^(){2}", "abc");
p("^((){2})", "abc");
// I feel these somewhat strange.
// But I have little confidence to say that this is a bug.
p("()", ""); // found (OK)
p("()\\1", ""); // not found (this must match?)
p("()\\1", "a"); // found (OK)
p("a()\\1b", "ab"); // found (OK)
p("a()b\\1", "ab"); // not found (this must match?)
return 0;
}
---
Kouhei Yanagita