John, thank you for your quick response. I was able to reproduce the correct results with your code, but when I add the flags regbase::normal | regbase::icase, I am getting the incorrect results.
From: John Maddock
Sent: 8/25/01 4:52 AM
Subject: [boost] regex: .*xxx.*
>This is most likely my error, but I am trying to do the following:
1) A user types in a search string
2) I add the prefix ".*" and suffix ".*" to the string
When I call regex_match, anything and everything matches, regardless of
the user typed. I would like the following results, and am guessing I
not using the correct regular expression syntax:
a) User types "Test"
b) Internally, I create the regular expression ".*Test.*"
Results (String : result)
"A Test" : true
"Testing 123" : false
"foo" : false
Using regex, regex_match is returning true for "foo". I tried changing
prefix to ".*?" to ensure a non-greedy search, but the results were the
OK, first things first, heres the code I used to test this:
if(regex_match("A Test", m, e))
cout << "matched \"A Test\"" << endl;
if(regex_match("Testing 123", m, e))
cout << "matched \"Testing 123\"" << endl;
if(regex_match("foo", m, e))
cout << "matched \"foo\"" << endl;
This gave the expected results:
"A Test": matched
"Testing 123": Matched
"foo": not matched
There is one possible source of error which may have confused you: if no
match is found then the regex_match structure is left unchanged - in
words it may still contain a match from a previous invocation - you
always check the return value from regex_match to see if a match
and not the regex_match struct.
I would also suggest that rather than pre/post pending .*, that you use
regex_search instead - this is likely to be much more efficient.
Finally if you don't want to find the "Test" in "Testing", then prepend
with \< and append \> to ensure that only whole words are found.
- John Maddock
Info: http://www.boost.org Unsubscribe:
Your use of Yahoo! Groups is subject to