44 lines
2.6 KiB
Plaintext
44 lines
2.6 KiB
Plaintext
[/
|
|
/ Copyright (c) 2008 Eric Niebler
|
|
/
|
|
/ Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
/ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
/]
|
|
|
|
[section Appendix 3: Differences from Boost.Regex]
|
|
|
|
Since many of xpressive's users are likely to be familiar with the _regexpp_ library,
|
|
I would be remiss if I failed to point out some important differences between xpressive
|
|
and _regexpp_. In particular:\n
|
|
|
|
* `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
|
|
`basic_regex::compile()` or `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 `xpressive::regex_compiler<>` factory.
|
|
* `boost::basic_regex<>` has a subset of `std::basic_string<>`'s members. `xpressive::basic_regex<>`
|
|
does not. The members lacking are: `assign()`, `operator[]()`, `max_size()`, `begin()`, `end()`,
|
|
`size()`, `compare()`, and `operator=(std::basic_string<>)`.
|
|
* Other member functions that exist in `boost::basic_regex<>` but do not exist in
|
|
`xpressive::basic_regex<>` are: `set_expression()`, `get_allocator()`, `imbue()`, `getloc()`,
|
|
`getflags()`, and `str()`.
|
|
* `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 `std::locale`.
|
|
* `xpressive::basic_regex<>` and `xpressive::match_results<>` do not have an Allocator template
|
|
parameter. This is by design.
|
|
* `match_not_dot_null` and `match_not_dot_newline` have moved from the `match_flag_type` enum to the
|
|
`syntax_option_type` enum, and they have changed names to `not_dot_null` and `not_dot_newline`.
|
|
* The following `syntax_option_type` enumeration values are not supported: `escape_in_lists`,
|
|
`char_classes`, `intervals`, `limited_ops`, `newline_alt`, `bk_plus_qm`, `bk_braces`, `bk_parens`,
|
|
`bk_refs`, `bk_vbar`, `use_except`, `failbit`, `literal`, `perlex`, `basic`, `extended`, `emacs`,
|
|
`awk`, `grep` ,`egrep`, `sed`, `JavaScript`, `JScript`.
|
|
* The following `match_flag_type` enumeration values are not supported: `match_not_bob`,
|
|
`match_not_eob`, `match_perl`, `match_posix`, and `match_extra`.
|
|
|
|
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.
|
|
|
|
[endsect]
|