###

# Boost.Regex

## History

###

Boost 1.34

- Fix for non-greedy repeats and partial matches not working correctly in some cases.
- Fix for non-greedy repeats on VC++ not working in some cases (bug report 1515830).
- Changed match_results::position() to return a valid result when *this represents a partial match.

Boost 1.33.1

- Fixed broken makefiles.
- Fixed configuration setup to allow building with VC7.1 - STLport-4.6.2 when using /Zc:wchar_t.
- Moved declarations class-inline in static_mutex.hpp so that SGI Irix compiler can cope.
- Added needed standard library #includes to fileiter.hpp, regex_workaround.hpp and cpp_regex_traits.hpp.
- Fixed a bug where non-greedy repeats could in certain strange curcumstances repeat more times than their maximum value.
- Fixed the value returned by basic_regex<>::empty() from a default constructed object.
- Changed the deffinition of regex_error to make it backwards compatible with Boost-1.32.0.
- Disabled external templates for Intel C++ 8.0 and earlier - otherwise unresolved references can occur.
- Rewritten extern template code for gcc so that only specific member functions are exported: otherwise strange unresolved references can occur when linking and mixing debug and non-debug code.
- Initialise all the data members of the unicode_iterators: this keeps gcc from issuing needless warnings.
- Ported the ICU integration code to VC6 and VC7.
- Ensured code is STLport debug mode clean.
- Fixed lookbehind assertions so that fixed length repeats are permitted, and so that regex iteration allows lookbehind to look back before the current search range (into the last match).
- Fixed strange bug with non-greedy repeats inside forward lookahead assertions.
- Enabled negated character classes inside character sets.
- Fixed regression so that [a-z-] is a valid expression again.
- Fixed bug that allowed some invalid expressions to be accepted.

Boost 1.33.0.

- Completely rewritten expression parsing code, and traits class support; now conforms to the standardization proposal.
- Breaking Change: The syntax options that can be passed to basic_regex constructors have been rationalized. The default option (perl) now has a value of zero, and it is now clearly documented which options apply to which regular expression syntax styles (perl, POSIX-extended, POSIX-basic etc). Some of the more esoteric options have now been removed, so there is the possibility that existing code may fail to compile: however equivalent functionality should still be available.
- Breaking Change: POSIX-extended and POSIX-basic regular expressions now enforce the letter of the POSIX standard much more closely than before.
- Added support for (?imsx-imsx) constructs.
- Added support for lookbehind expressions (?<=positive-lookbehind) and (?<!negative-lookbehind).
- Added support for conditional expressions (?(assertion)true-expresion|false-expression).
- Added MFC/ATL string wrappers.
- Added Unicode support; based on ICU.
- Changed newline support to recognise \f as a line separator (all character types), and \x85 as a line separator for wide characters / Unicode only.
- Added a new format flag `format_literal` that treats the replace string as a literal, rather than a Perl or Sed style format string.
- Errors are now reported by throwing exceptions of type `regex_error`. The types used previously - `bad_expression` and `bad_pattern` - are now just typedefs for `regex_error`. Type `regex_error` has a couple of new members: `code()` to report an error code rather than a string, and `position()` to report where in the expression the error occured.

Boost 1.32.1.

- Fixed bug in partial matches of bounded repeats of '.'.

Boost 1.31.0.

- Completely rewritten pattern matching code - it is now up to 10 times faster than before.
- Reorganized documentation.
- Deprecated all interfaces that are not part of the regular expression standardization proposal.
- Added regex_iterator and regex_token_iterator .
- Added support for Perl style independent sub-expressions.
- Added non-member operators to the sub_match class, so that you can compare sub_match's with strings, or add them to a string to produce a new string.
- Added experimental support for extended capture information.
- Changed the match flags so that they are a distinct type (not an integer), if you try to pass the match flags as an integer rather than match_flag_type to the regex algorithms then you will now get a compiler error.

Revised 28 June 2004

© Copyright John Maddock 1998- 2004

Use, modification and distribution are subject to 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)