Since many of xpressive's users are likely to be familiar with the Boost.Regex library, I would be remiss if
I failed to point out some important differences between xpressive and Boost.Regex. In particular:
xpressive::basic_regex<>is a template on the iterator type, not the character type.
xpressive::basic_regex<>cannot be constructed directly from a string; rather, you must use
regex_compiler<>to build a regex object from a string.
xpressive::basic_regex<>does not have an
imbue()member function; rather, the
imbue()member function is in the
boost::basic_regex<>has a subset of
xpressive::basic_regex<>does not. The members lacking are:
boost::basic_regex<>but do not exist in
xpressive::basic_regex<>does not have a RegexTraits template parameter. Customization of regex syntax and localization behavior will be controlled by
regex_compiler<>and a custom regex facet for
xpressive::match_results<>do not have an Allocator template parameter. This is by design.
match_not_dot_newlinehave moved from the
match_flag_typeenum to the
syntax_option_typeenum, and they have changed names to
syntax_option_typeenumeration values are not supported:
match_flag_typeenumeration values are not supported:
Also, in the current implementation, the regex algorithms in xpressive will not detect pathological behavior and abort by throwing an exception. It is up to you to write efficient patterns that do not behave pathologically.