|
Boost Users : |
From: Andriy Tylychko \(mail.ru\) (telya_at_[hidden])
Date: 2006-09-08 05:35:23
> Richard Dingwall
>
> Cheers. I was rather hoping not to have to use regular
> expressions; they're kinda beyond the intended users of my
> program (it's for a user-defined filter function, and I don't
> expect them to be familiar with regex syntax).
>
> I cheaped out and used an old C wildcmp(wild.c_str(),
> text.c_str()) method instead.
>
You can translate from wildcards syntax to regex one and then use
string_algo that supports regex. For example:
std::string wildcards_to_regex(std::string const& wildcard_pattern)
{ // replaces wildcards by corresponding regex expressions
// mask all regex special characters (except wildcards characters
"*?")
std::string regex_pattern =
boost::algorithm::replace_all_regex_copy(wildcard_pattern,
boost::regex("[\\.\\[\\]\\{\\}\\(\\)\\\\\\+\\|\\^\\$]"),
std::string("\\\\$&"));
// replace wildcards by corresponding regex's
boost::algorithm::replace_all_regex(regex_pattern,
boost::regex("\\*"), std::string("\\.\\*"));
boost::algorithm::replace_all_regex(regex_pattern,
boost::regex("\\?"), std::string("\\.{1}"));
return regex_pattern;
}
Test:
assert(wildcards_to_regex("+[*?") == "\\+\\[.*.{1}");
To community and especially to Pavol Droba as the author of string_algo:
What do you think about popularity of wildcards as the tool for end-users?
Is it worth to add wildcards support to the library? To what library? Is the
boost-development mailing list a better place for this discussion?
Best regards,
Andriy Tylychko,
telia_at_[hidden]
www.vichnavich.com
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net