Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards


  Copyright 2006-2007 John Maddock.
  Distributed under the Boost Software License, Version 1.0.
  (See accompanying file LICENSE_1_0.txt or copy at

[section:history History]

New issues should be submitted at [@]

Currently open issues can be viewed [@ here].

All issues including closed ones can be viewed [@ here].

[h4 Boost.Regex-5.1.4 (Boost-172.0)]

* Minor build fixes, see [@ #89].

[h4 Boost.Regex-5.1.3 (Boost-1.64.0)]

* Compiling with Oracle C++ toolset is no longer restricted to static linking.
* Big effort to de-fuzz the library using libFuzzer and fix identified issues, see:  [@ #12818].

[h4 Boost.Regex-5.1.2 (Boost-1.62.0)]

* Fix buffer over-run error when parsing certain invalid regexes, see [@ #12222].
* Fix detection of ICU in library build, see [@ #12152].
* Fix bug in case sensitivity change, see [@ #11940].
* Allow types wider than int in `\x{}` expressions (for char32_t etc), see [@ #11988].

[h4 Boost.Regex-5.1.1 (Boost-1.61.0)]

* Change to lockfree implementation of memory cache, see [@ PR#23].

[h4 Boost.Regex-5.1.0 (Boost-1.60.0)]

* Add support for Perl's backtracking control verbs, see [@ #11205].  Note however, that
(*MARK) and operations on marks are not currently supported.
* Fix incorrect range end when matching \[\[:unicode:\]\], see [@ #11524].
* Change POSIX reg_comp API to not check potentially uninitialized memory, note that code which was previously free from memory
leaks (but none the less buggy, as it didn't call reg_free) will now leak.  See [@ #11472].
* Make sub_match a valid C++ range type, see [@ #11036].

[h4 Boost.Regex-5.0.1 (Boost-1.58.0)]

* Fixed some typos as in [@ #10682].
* Merged [@ pull-request #6] for Coverity warnings.
* Merged [@ pull-request #7] for Coverity warnings.
* Merged [@ pull-request #8] for Coverity warnings.
* Merged [@ pull-request #10] to enable more build variants when linking to ICU.
* Fix issue with ICU and partial matches, see [@ #10114].
* Removed delayload support for the ICU libraries: this doesn't work with the latest ICU releases (linker errors).

[h4 Boost.Regex-5.0.0 (Boost-1.56.0)]

* Moved to library-specific version number post the move to Git.  And since we have one (minor) breaking change
this gets bumped up from v4 to v5.
* [*Breaking change:] corrected behavior of `basic_regex<>::mark_count()` to match existing documentation,
`basic_regex<>::subexpression(n)` changed to match, see [@ #9227]
* Fixed issue [@ #8903].
* Fixed documentation typos from [@ #9283].
* Fixed bug in collation code that failed if the locale generated collation strings with embedded nul's,
see [@ #9451].
* Apply patch for unusual thread usage (no statically initialized mutexes), see [@ #9461].
* Added better checks for invalid UTF-8 sequences, see [@ #9473].

[h4 Boost-1.54]

Fixed issue [@ #8569].

[h4 Boost-1.53]

Fixed Issues:
[@ #7744], [@ #7644].

[h4 Boost-1.51]

Fixed issues:
[@ #589], [@ #7084],
[@ #7032], [@ #6346].

[h4 Boost-1.50]

Fixed issue with `(?!)` not being a valid expression, and updated docs on what constitutes a valid conditional expression.

[h4 Boost-1.48]

Fixed issues:
[@ #698], [@ #5835],
[@ #5958], [@ #5736].

[h4 Boost 1.47]

Fixed issues:
[@ #5223], [@ #5353],
[@ #5363], [@ #5462],
[@ #5472], [@ #5504].

[h4 Boost 1.44]

Fixed issues: 
[@ #4309],
[@ #4215],
[@ #4212],
[@ #4191],
[@ #4132],
[@ #4123],
[@ #4114],
[@ #4036],
[@ #4020],
[@ #3941],
[@ #3902],
[@ #3890]

[h4 Boost 1.42]

* Added support for Functors rather than strings as format expressions.
* Improved error reporting when throwing exceptions to include better more relevant information.
* Improved performance and reduced stack usage of recursive expressions.
* Fixed tickets
[@ #2802],
[@ #3425],
[@ #3507],
[@ #3546],
[@ #3631],
[@ #3632],
[@ #3715],
[@ #3718],
[@ #3763],
[@ #3764]

[h4 Boost 1.40]

* Added support for many Perl 5.10 syntax elements including named
sub-expressions, branch resets and recursive regular expressions.

[h4 Boost 1.38]

* [*Breaking change]: empty expressions, and empty alternatives are now
allowed when using the Perl regular expression syntax.  This change has
been added for Perl compatibility, when the new [syntax_option_type]
['no_empty_expressions] is set then the old behaviour is preserved and
empty expressions are prohibited.  This is issue
[@ #1081].
* Added support for Perl style ${n} expressions in format strings
(issue [@ #2556]).
* Added support for accessing the location of sub-expressions within the
regular expression string 
(issue [@ #2269]).
* Fixed compiler compatibility issues 
[@ #2244],
[@ #2514],
[@ #2458].

[h4 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.
* Fixed the grep and egrep options so that the newline character gets treated the same as |.

[h4 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 circumstances repeat more times than their maximum value.
* Fixed the value returned by basic_regex<>::empty() from a default constructed object.
* Changed the definition 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.

[h4 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-expression|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 occurred.

[h4 Boost 1.32.1]

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

[h4 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.