Compare commits

..

1 Commits

Author SHA1 Message Date
cppalliance-bot b033d8b088 Update coverage data 2026-05-22 16:54:06 +00:00
4353 changed files with 4093483 additions and 112928 deletions
-96
View File
@@ -1,96 +0,0 @@
* text=auto !eol svneol=native#text/plain
*.gitattributes text svneol=native#text/plain
# Scriptish formats
*.bat text svneol=native#text/plain
*.bsh text svneol=native#text/x-beanshell
*.cgi text svneol=native#text/plain
*.cmd text svneol=native#text/plain
*.js text svneol=native#text/javascript
*.php text svneol=native#text/x-php
*.pl text svneol=native#text/x-perl
*.pm text svneol=native#text/x-perl
*.py text svneol=native#text/x-python
*.sh eol=lf svneol=LF#text/x-sh
configure eol=lf svneol=LF#text/x-sh
# Image formats
*.bmp binary svneol=unset#image/bmp
*.gif binary svneol=unset#image/gif
*.ico binary svneol=unset#image/ico
*.jpeg binary svneol=unset#image/jpeg
*.jpg binary svneol=unset#image/jpeg
*.png binary svneol=unset#image/png
*.tif binary svneol=unset#image/tiff
*.tiff binary svneol=unset#image/tiff
*.svg text svneol=native#image/svg%2Bxml
# Data formats
*.pdf binary svneol=unset#application/pdf
*.avi binary svneol=unset#video/avi
*.doc binary svneol=unset#application/msword
*.dsp text svneol=crlf#text/plain
*.dsw text svneol=crlf#text/plain
*.eps binary svneol=unset#application/postscript
*.gz binary svneol=unset#application/gzip
*.mov binary svneol=unset#video/quicktime
*.mp3 binary svneol=unset#audio/mpeg
*.ppt binary svneol=unset#application/vnd.ms-powerpoint
*.ps binary svneol=unset#application/postscript
*.psd binary svneol=unset#application/photoshop
*.rdf binary svneol=unset#text/rdf
*.rss text svneol=unset#text/xml
*.rtf binary svneol=unset#text/rtf
*.sln text svneol=native#text/plain
*.swf binary svneol=unset#application/x-shockwave-flash
*.tgz binary svneol=unset#application/gzip
*.vcproj text svneol=native#text/xml
*.vcxproj text svneol=native#text/xml
*.vsprops text svneol=native#text/xml
*.wav binary svneol=unset#audio/wav
*.xls binary svneol=unset#application/vnd.ms-excel
*.zip binary svneol=unset#application/zip
# Text formats
.htaccess text svneol=native#text/plain
*.bbk text svneol=native#text/xml
*.cmake text svneol=native#text/plain
*.css text svneol=native#text/css
*.dtd text svneol=native#text/xml
*.htm text svneol=native#text/html
*.html text svneol=native#text/html
*.ini text svneol=native#text/plain
*.log text svneol=native#text/plain
*.mak text svneol=native#text/plain
*.qbk text svneol=native#text/plain
*.rst text svneol=native#text/plain
*.sql text svneol=native#text/x-sql
*.txt text svneol=native#text/plain
*.xhtml text svneol=native#text/xhtml%2Bxml
*.xml text svneol=native#text/xml
*.xsd text svneol=native#text/xml
*.xsl text svneol=native#text/xml
*.xslt text svneol=native#text/xml
*.xul text svneol=native#text/xul
*.yml text svneol=native#text/plain
boost-no-inspect text svneol=native#text/plain
CHANGES text svneol=native#text/plain
COPYING text svneol=native#text/plain
INSTALL text svneol=native#text/plain
Jamfile text svneol=native#text/plain
Jamroot text svneol=native#text/plain
Jamfile.v2 text svneol=native#text/plain
Jamrules text svneol=native#text/plain
Makefile* text svneol=native#text/plain
README text svneol=native#text/plain
TODO text svneol=native#text/plain
# Code formats
*.c text svneol=native#text/plain
*.cpp text svneol=native#text/plain
*.h text svneol=native#text/plain
*.hpp text svneol=native#text/plain
*.ipp text svneol=native#text/plain
*.tpp text svneol=native#text/plain
*.jam text svneol=native#text/plain
*.java text svneol=native#text/plain
-449
View File
@@ -1,449 +0,0 @@
# Copyright 2020 Evan Miller
# Copyright 2020 Matt Borland
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
name: CI
on:
push:
branches:
- master
- develop
pull_request:
release:
types: [published, created, edited]
jobs:
ubuntu-focal:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
compiler: [ g++-9, g++-10, clang++-9, clang++-10 ]
standard: [ c++11, c++14, c++17, c++2a ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[apple];[Apple];[APPLE]'
commit-filter-separator: ';'
fail-fast: true
- name: Set TOOLSET
run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV
- name: Add repository
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Install packages
run: sudo apt install g++-9 g++-10 clang-9 clang-10 libicu-dev
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: Generate headers
run: ./b2 headers
working-directory: ../boost-root
- name: Generate user config
run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} : <cxxflags>-std=${{ matrix.standard }} ;" > ~/user-config.jam'
working-directory: ../boost-root
- name: Config info install
run: ../../../b2 config_info_travis_install toolset=$TOOLSET
working-directory: ../boost-root/libs/config/test
- name: Config info
run: ./config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ../../../b2 toolset=$TOOLSET
working-directory: ../boost-root/libs/regex/test
ubuntu-jammy-standalone:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
compiler: [ g++ ]
standard: [ c++11, c++14, c++17, c++2a ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[apple];[Apple];[APPLE]'
commit-filter-separator: ';'
fail-fast: true
- name: Set TOOLSET
run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV
- name: Add repository
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Install packages
run: sudo apt install libicu-dev
- name: Test
run: ${{ matrix.compiler }} -std=${{ matrix.standard }} -I../../include *.cpp ../../src/*.cpp -o regress && ./regress
working-directory: ./test/regress
ubuntu-bionic:
runs-on: ubuntu-18.04
strategy:
fail-fast: false
matrix:
compiler: [ g++-7, g++-8, clang++-7, clang++-8 ]
standard: [ c++11, c++14, c++17 ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[apple];[Apple];[APPLE]'
commit-filter-separator: ';'
fail-fast: true
- name: Set TOOLSET
run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV
- name: Add repository
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Install packages
run: sudo apt install g++-7 g++-8 clang-7 clang-8 libicu-dev
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: Generate headers
run: ./b2 headers
working-directory: ../boost-root
- name: Generate user config
run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} : <cxxflags>-std=${{ matrix.standard }} ;" > ~/user-config.jam'
working-directory: ../boost-root
- name: Config info install
run: ../../../b2 config_info_travis_install toolset=$TOOLSET
working-directory: ../boost-root/libs/config/test
- name: Config info
run: ./config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ../../../b2 toolset=$TOOLSET define=CI_SUPPRESS_KNOWN_ISSUES define=SLOW_COMPILER
working-directory: ../boost-root/libs/regex/test
macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
toolset: [ clang ]
standard: [ 11, 14, 17, 2a ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: Generate headers
run: ./b2 headers
working-directory: ../boost-root
- name: Config info install
run: ../../../b2 config_info_travis_install toolset=${{ matrix.toolset }} cxxstd=${{ matrix.standard }}
working-directory: ../boost-root/libs/config/test
- name: Config info
run: ./config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=${{ matrix.standard }}
working-directory: ../boost-root/libs/regex/test
windows_gcc:
runs-on: windows-2019
defaults:
run:
shell: cmd
env:
ARGS: toolset=${{ matrix.toolset }} address-model=64 cxxstd=${{ matrix.standard }}
strategy:
fail-fast: false
matrix:
toolset: [ gcc ]
standard: [ 11, 14, 17, 2a ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install %ARGS%
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash %ARGS%
working-directory: ../boost-root/libs/regex/test
windows_msvc_14_0:
runs-on: windows-2019
defaults:
run:
shell: cmd
env:
ARGS: toolset=${{ matrix.toolset }} address-model=64 cxxstd=${{ matrix.standard }}
strategy:
fail-fast: false
matrix:
toolset: [ msvc-14.0 ]
standard: [ 14, 17 ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install %ARGS%
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash %ARGS%
working-directory: ../boost-root/libs/regex/test
windows_msvc_14_2:
runs-on: windows-2019
defaults:
run:
shell: cmd
env:
ARGS: toolset=${{ matrix.toolset }} address-model=64 cxxstd=${{ matrix.standard }}
strategy:
fail-fast: false
matrix:
toolset: [ msvc-14.2 ]
standard: [ 14, 17, latest ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install %ARGS%
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash %ARGS%
working-directory: ../boost-root/libs/regex/test
windows_msvc_14_3:
runs-on: windows-2022
defaults:
run:
shell: cmd
env:
ARGS: toolset=${{ matrix.toolset }} address-model=64 cxxstd=${{ matrix.standard }}
strategy:
fail-fast: false
matrix:
toolset: [ msvc-14.3 ]
standard: [ 14, 17, 20, latest ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install %ARGS%
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash %ARGS%
working-directory: ../boost-root/libs/regex/test
ubuntu-cmake-install:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: CMake Test
working-directory: ../boost-root
run: |
mkdir __build__ && cd __build__
cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES="regex;core" -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=~/.local ..
cmake --build . --target install
cd ../libs/regex/test/cmake_install_test && mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
cmake --build .
cmake --build . --target check
ubuntu-cmake-check:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- name: Install packages
run: sudo apt install libicu-dev
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/regex
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py -I example -g "--jobs 3" regex
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: CMake Test
working-directory: ../boost-root/libs/regex/test
run: |
cd cmake_subdir_test && mkdir __build__ && cd __build__
cmake ..
cmake --build .
cmake --build . --target check
rm -rf *
echo Standalone configuration
cmake -DBOOST_REGEX_STANDALONE=on ..
cmake --build .
cmake --build . --target check
cd ../../cmake_subdir_test_icu && mkdir __build__ && cd __build__
cmake ..
cmake --build .
cmake --build . --target check
rm -rf *
echo Standalone configuration
cmake -DBOOST_REGEX_STANDALONE=on ..
cmake --build .
cmake --build . --target check
View File
-69
View File
@@ -1,69 +0,0 @@
# Copyright 2018 Mike Dev
# Copyright 2019 Peter Dimov
# 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
# We support CMake 3.5, but prefer 3.16 policies and behavior
cmake_minimum_required(VERSION 3.5...3.16)
project(boost_regex VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
add_library(boost_regex INTERFACE)
add_library(Boost::regex ALIAS boost_regex)
target_include_directories(boost_regex INTERFACE include)
option(BOOST_REGEX_STANDALONE "Boost.Regex: Enable Standalone Mode (i.e. no Boost dependencies)")
if(NOT BOOST_REGEX_STANDALONE)
target_link_libraries(boost_regex
INTERFACE
Boost::config
Boost::throw_exception
Boost::predef
Boost::assert
)
else()
target_compile_definitions(boost_regex
INTERFACE BOOST_REGEX_STANDALONE
)
endif()
find_package(ICU COMPONENTS data i18n uc QUIET)
#option(BOOST_REGEX_ENABLE_ICU "Boost.Regex: enable ICU support" ${ICU_FOUND})
if(ICU_FOUND)
add_library(boost_regex_icu INTERFACE)
add_library(Boost::regex_icu ALIAS boost_regex_icu)
target_include_directories(boost_regex_icu INTERFACE include)
if(NOT BOOST_REGEX_STANDALONE)
target_link_libraries(boost_regex_icu
INTERFACE
Boost::config
Boost::throw_exception
Boost::predef
Boost::assert
)
else()
target_compile_definitions(boost_regex_icu
INTERFACE BOOST_REGEX_STANDALONE
)
endif()
find_package(ICU COMPONENTS data i18n uc REQUIRED)
target_link_libraries(boost_regex_icu INTERFACE ICU::data ICU::i18n ICU::uc)
endif()
-47
View File
@@ -1,47 +0,0 @@
Boost Regex Library
============================
The Boost Regex library provides regular expression support for C++, this library is the ancestor to std::regex and still goes beyond
and offers some advantages to, the standard version.
The full documentation is available on [boost.org](http://www.boost.org/doc/libs/release/libs/regex/index.html).
## Standalone Mode ##
This library may now be used in "standalone" mode without the rest of the Boost C++ libraries, in order to do this you must either:
* Have a C++17 compiler that supports __has_include, in this case if <boost/config.hpp> is not present then the library will automoatically enter standalone mode. Or:
* Define BOOST_REGEX_STANDALONE when building.
The main difference between the 2 modes, is that when Boost.Config is present the library will automatically configure itself around various compiler defects. In particular in order to use the library with exception support turned off, you will either need a copy of Boost.Config in your include path, or else manually define BOOST_NO_EXCEPTIONS when building.
In any event, to obtain a standalone version of this library, simply download a .zip of the "master" branch of this repository.
## Support, bugs and feature requests ##
Bugs and feature requests can be reported through the [Gitub issue tracker](https://github.com/boostorg/regex/issues)
(see [open issues](https://github.com/boostorg/regex/issues) and
[closed issues](https://github.com/boostorg/regex/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aclosed)).
You can submit your changes through a [pull request](https://github.com/boostorg/regex/pulls).
There is no mailing-list specific to Boost Regex, although you can use the general-purpose Boost [mailing-list](http://lists.boost.org/mailman/listinfo.cgi/boost-users) using the tag [regex].
## Development ##
Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)):
git clone https://github.com/boostorg/boost
cd boost
git submodule update --init
The Boost Regex Library is located in `libs/regex/`.
### Running tests ###
First, make sure you are in `libs/regex/test`.
You can either run all the tests listed in `Jamfile.v2` or run a single test:
../../../b2 <- run all tests
../../../b2 regex_regress <- single test
-165
View File
@@ -1,165 +0,0 @@
# copyright John Maddock 2003
# 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.
import modules ;
import testing ;
import errors ;
project : requirements
# default to all warnings on:
<warnings>all
;
local disable-icu = [ MATCH (--disable-icu) : [ modules.peek : ARGV ] ] ;
rule path_options ( properties * )
{
local result ;
if <address-model>64 in $(properties) && <toolset>msvc in $(properties)
{
result = <search>$(ICU_PATH)/bin64 <search>$(ICU_PATH)/lib64 ;
}
else
{
result = <search>$(ICU_PATH)/bin <search>$(ICU_PATH)/lib ;
}
return $(result) ;
}
#
# ICU configuration:
#
if ! $(disable-icu)
{
if [ modules.peek : ICU_LINK ]
{
errors.user-error : "The ICU_LINK option is no longer supported by the Boost.Regex build - please refer to the documentation for equivalent options" ;
}
if [ modules.peek : ICU_PATH ]
{
ICU_PATH = [ modules.peek : ICU_PATH ] ;
}
if [ modules.peek : ICU_ICUUC_NAME ]
{
ICU_ICUUC_NAME = [ modules.peek : ICU_ICUUC_NAME ] ;
}
if [ modules.peek : ICU_ICUDT_NAME ]
{
ICU_ICUDT_NAME = [ modules.peek : ICU_ICUDT_NAME ] ;
}
if [ modules.peek : ICU_ICUIN_NAME ]
{
ICU_ICUIN_NAME = [ modules.peek : ICU_ICUIN_NAME ] ;
}
if $(ICU_ICUUC_NAME)
{
lib icuuc : : <name>$(ICU_ICUUC_NAME) <conditional>@path_options ;
}
else
{
lib icuuc : : <runtime-link>shared <conditional>@path_options ;
lib icuuc : : <toolset>msvc <variant>debug <name>icuucd <runtime-link>shared <conditional>@path_options ;
lib icuuc : : <toolset>intel <target-os>windows <variant>debug <name>icuucd <runtime-link>shared <conditional>@path_options ;
lib icuuc : : <name>sicuuc <runtime-link>static <conditional>@path_options ;
lib icuuc : : <toolset>msvc <variant>debug <name>sicuucd <runtime-link>static <conditional>@path_options ;
lib icuuc : : <toolset>intel <target-os>windows <variant>debug <name>sicuucd <runtime-link>static <conditional>@path_options ;
lib icuuc : : <name>this_is_an_invalid_library_name ;
}
if $(ICU_ICUDT_NAME)
{
lib icudt : : <name>$(ICU_ICUDT_NAME) <conditional>@path_options ;
}
else
{
lib icudt : : <name>icudata <runtime-link>shared <conditional>@path_options ;
lib icudt : : <name>icudt <toolset>msvc <runtime-link>shared <conditional>@path_options ;
lib icudt : : <name>icudt <toolset>intel <target-os>windows <runtime-link>shared <conditional>@path_options ;
lib icudt : : <name>sicudata <runtime-link>static <conditional>@path_options ;
lib icudt : : <name>sicudt <toolset>msvc <runtime-link>static <conditional>@path_options ;
lib icudt : : <name>sicudt <toolset>intel <target-os>windows <runtime-link>static <conditional>@path_options ;
lib icudt : : <name>this_is_an_invalid_library_name ;
}
if $(ICU_ICUIN_NAME)
{
lib icuin : : <name>$(ICU_ICUIN_NAME) <conditional>@path_options ;
}
else
{
lib icuin : : <name>icui18n <runtime-link>shared <conditional>@path_options ;
lib icuin : : <toolset>msvc <variant>debug <name>icuind <runtime-link>shared <conditional>@path_options ;
lib icuin : : <toolset>msvc <name>icuin <runtime-link>shared <conditional>@path_options ;
lib icuin : : <toolset>intel <target-os>windows <variant>debug <name>icuind <runtime-link>shared <conditional>@path_options ;
lib icuin : : <toolset>intel <target-os>windows <name>icuin <runtime-link>shared <conditional>@path_options ;
lib icuin : : <name>sicui18n <runtime-link>static <conditional>@path_options ;
lib icuin : : <toolset>msvc <variant>debug <name>sicuind <runtime-link>static <conditional>@path_options ;
lib icuin : : <toolset>msvc <name>sicuin <runtime-link>static <conditional>@path_options ;
lib icuin : : <toolset>intel <target-os>windows <variant>debug <name>sicuind <runtime-link>static <conditional>@path_options ;
lib icuin : : <toolset>intel <target-os>windows <name>sicuin <runtime-link>static <conditional>@path_options ;
lib icuin : : <name>this_is_an_invalid_library_name ;
}
ICU_OPTS =
<include>$(ICU_PATH)/include
<runtime-link>shared:<library>icuuc/<link>shared
<runtime-link>shared:<library>icudt/<link>shared
<runtime-link>shared:<library>icuin/<link>shared
<runtime-link>static:<library>icuuc
<runtime-link>static:<library>icudt
<runtime-link>static:<library>icuin
<target-os>windows,<toolset>clang:<linkflags>"advapi32.lib"
<define>BOOST_HAS_ICU=1
<runtime-link>static:<define>U_STATIC_IMPLEMENTATION=1
;
if [ modules.peek : ICU_DATA_DIR ]
{
rule data-dir-options ( properties * )
{
local result ;
local data_dir = [ modules.peek : ICU_DATA_DIR ] ;
if <toolset>emscripten in $(properties)
{
result = <define>ICU_DATA_DIR=\\\"/$(data_dir:BS)\\\"
"<linkflags>--embed-file $(data_dir)@/$(data_dir:BS)"
;
}
else
{
result = <define>ICU_DATA_DIR=\\\"$(data_dir)\\\" ;
}
return $(result) ;
}
ICU_OPTS += <conditional>@data-dir-options ;
}
}
exe has_icu : has_icu_test.cpp : $(ICU_OPTS) ;
explicit has_icu ;
obj is_legacy_03 : is_legacy_03.cpp ;
explicit is_legacy_03 ;
alias icu_options : : : : [ check-target-builds has_icu : $(ICU_OPTS) : ] ;
SOURCES =
posix_api.cpp
regex.cpp
regex_debug.cpp
static_mutex.cpp
wide_posix_api.cpp
;
lib boost_regex : ../src/$(SOURCES) icu_options
:
<link>shared:<define>BOOST_REGEX_DYN_LINK=1
<toolset>gcc-cygwin:<link>static
;
boost-install boost_regex ;
-56
View File
@@ -1,56 +0,0 @@
/*
*
* Copyright (c) 2010
* John Maddock
*
* 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)
*
*/
#include <unicode/uversion.h>
#include <unicode/utypes.h>
#include <unicode/uchar.h>
#include <unicode/coll.h>
#include <boost/scoped_ptr.hpp>
#include <iostream>
#include <iomanip>
#if defined(_MSC_VER) && !defined(_DLL)
//#error "Mixing ICU with a static runtime doesn't work"
#endif
void print_error(UErrorCode err, const char* func)
{
std::cerr << "Error from function " << func << " with error: " << ::u_errorName(err) << std::endl;
}
int main()
{
#ifdef ICU_DATA_DIR
::u_setDataDirectory(ICU_DATA_DIR);
#endif
// To detect possible binary mismatches between the installed ICU build, and whatever
// C++ std lib's we're using, we need to:
// * Make sure we call ICU C++ API's
// * Make sure we call std lib C++ API's as well (cout).
// * Be sure this program is run, not just built.
UErrorCode err = U_ZERO_ERROR;
UChar32 c = ::u_charFromName(U_UNICODE_CHAR_NAME, "GREEK SMALL LETTER ALPHA", &err);
std::cout << (int)c << std::endl;
if(err > 0)
{
print_error(err, "u_charFromName");
return err;
}
U_NAMESPACE_QUALIFIER Locale l;
boost::scoped_ptr<U_NAMESPACE_QUALIFIER Collator> p_col(U_NAMESPACE_QUALIFIER Collator::createInstance(l, err));
if(err > 0)
{
print_error(err, "Collator::createInstance");
return err;
}
return err > 0 ? err : 0;
}
-16
View File
@@ -1,16 +0,0 @@
/*
*
* Copyright (c) 2020
* John Maddock
*
* 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)
*
*/
#include <boost/regex/config.hpp>
#ifdef BOOST_REGEX_CXX03
#error "Legacy mode"
#endif
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

+5
View File
@@ -0,0 +1,5 @@
{
"lines": 89.4,
"functions": 59.3,
"branches": 0.0
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+295
View File
@@ -0,0 +1,295 @@
<!DOCTYPE html>
<html class="theme-green">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>regex</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<script>
// Apply theme and font size immediately to prevent flash
(function() {
document.documentElement.classList.add('no-transitions');
var saved = localStorage.getItem('gcovr-theme');
var theme = (saved === 'light' || saved === 'dark') ? saved
: window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', theme);
document.documentElement.style.backgroundColor = theme === 'light' ? '#ffffff' : '#0d1117';
// Apply flat mode immediately to prevent sidebar flash
if (localStorage.getItem('gcovr-view-mode') === 'flat') {
document.documentElement.classList.add('early-flat-mode');
}
})();
</script>
<link rel="stylesheet" href="index.css"/>
<script src="index.js" charset="UTF-8"></script>
</head>
<body>
<div class="app-container">
<!-- Sidebar -->
<aside class="sidebar" id="sidebar"><script>if(localStorage.getItem('sidebar-collapsed')==='true'){document.currentScript.parentElement.classList.add('collapsed');}else{var sw=localStorage.getItem('gcovr-sidebar-width');if(sw)document.documentElement.style.setProperty('--sidebar-width',sw+'px');}</script>
<div class="sidebar-header">
<div class="sidebar-header-row">
<a href="index.html" class="sidebar-logo" title="Back to index">
<svg viewBox="150 150 700 160" class="boost-wordmark"><path fill="#ffa000" d="M292.45,152.89h-93.18l-46.59,80,12.63,21.69,46.57-79.99h47.07c20.07,0,36.38,16.18,36.38,36.07,0,8.46-3.54,18.29-10.84,22.4,7.11,5.3,10.54,13.73,10.54,22.01,0,19.88-16.32,36.06-36.38,36.06h-61.71l16.12-27.7h45.59c4.66,0,8.45-3.75,8.45-8.36s-3.57-8.16-8.05-8.35c-.13-.02-36.25,0-36.25,0l16.14-27.71s20.22.02,20.31,0c1.9-.06,3.63-.74,5-1.85,1.93-1.53,3.15-3.87,3.15-6.5,0-4.62-3.79-8.37-8.45-8.37h-30.03l-47.04,80.75,17.39,29.85h93.18l46.59-80-46.59-80h0Z"/><path fill="currentColor" d="M550.81,291.93c-9.23,0-17.31-2.01-24.23-6.04s-12.29-9.63-16.1-16.83c-3.81-7.19-5.72-15.4-5.72-24.63s1.9-17.6,5.72-24.79c3.81-7.19,9.18-12.82,16.1-16.91,6.92-4.08,15-6.12,24.23-6.12s17.44,2.04,24.31,6.12,12.21,9.72,16.02,16.91,5.72,15.46,5.72,24.79-1.91,17.44-5.72,24.63-9.15,12.8-16.02,16.83c-6.87,4.02-14.97,6.04-24.31,6.04ZM550.81,272.45c5.37,0,9.79-1.23,13.28-3.7,3.49-2.47,6.12-5.82,7.89-10.06s2.66-8.99,2.66-14.25-.89-10.2-2.66-14.49c-1.77-4.29-4.4-7.7-7.89-10.22-3.49-2.52-7.92-3.78-13.28-3.78s-9.82,1.26-13.36,3.78c-3.54,2.52-6.2,5.93-7.97,10.22-1.77,4.29-2.66,9.12-2.66,14.49s.89,10.01,2.66,14.25c1.77,4.24,4.43,7.59,7.97,10.06s7.99,3.7,13.36,3.7Z"/><path fill="currentColor" d="M648.53,291.93c-9.23,0-17.31-2.01-24.23-6.04s-12.29-9.63-16.1-16.83c-3.81-7.19-5.72-15.4-5.72-24.63s1.9-17.6,5.72-24.79c3.81-7.19,9.18-12.82,16.1-16.91,6.92-4.08,15-6.12,24.23-6.12s17.44,2.04,24.31,6.12,12.21,9.72,16.02,16.91,5.72,15.46,5.72,24.79-1.91,17.44-5.72,24.63-9.15,12.8-16.02,16.83c-6.87,4.02-14.97,6.04-24.31,6.04ZM648.53,272.45c5.37,0,9.79-1.23,13.28-3.7,3.49-2.47,6.12-5.82,7.89-10.06s2.66-8.99,2.66-14.25-.89-10.2-2.66-14.49c-1.77-4.29-4.4-7.7-7.89-10.22-3.49-2.52-7.92-3.78-13.28-3.78s-9.82,1.26-13.36,3.78c-3.54,2.52-6.2,5.93-7.97,10.22-1.77,4.29-2.66,9.12-2.66,14.49s.89,10.01,2.66,14.25c1.77,4.24,4.43,7.59,7.97,10.06s7.99,3.7,13.36,3.7Z"/><path fill="currentColor" d="M722.75,260.85c.54,4.62,2.55,7.86,6.04,9.74s7.49,2.82,11.99,2.82,8.21-.8,11.11-2.41c2.9-1.61,4.35-4.24,4.35-7.89,0-2.25-.99-4-2.98-5.23s-4.56-2.2-7.73-2.9c-3.17-.7-6.66-1.37-10.46-2.01-3.81-.64-7.65-1.5-11.51-2.58-3.86-1.07-7.41-2.58-10.63-4.51-3.22-1.93-5.8-4.53-7.73-7.81-1.93-3.27-2.9-7.49-2.9-12.64,0-4.83,1.55-9.47,4.67-13.93,3.11-4.45,7.49-8.05,13.12-10.79,5.63-2.74,12.1-4.11,19.4-4.11,6.55,0,12.61,1.32,18.19,3.95,5.58,2.63,10.06,6.25,13.44,10.87s5.07,9.98,5.07,16.1h-21.41c-.43-4.61-2.15-7.86-5.15-9.74-3.01-1.88-6.6-2.82-10.79-2.82-4.94,0-8.69.99-11.27,2.98s-3.86,4.48-3.86,7.49c0,2.47.99,4.4,2.98,5.8,1.98,1.4,4.56,2.47,7.73,3.22,3.16.75,6.68,1.42,10.55,2.01,3.86.59,7.7,1.4,11.51,2.42,3.81,1.02,7.33,2.47,10.55,4.35s5.8,4.4,7.73,7.57,2.9,7.27,2.9,12.32c0,5.69-1.56,10.71-4.67,15.05-3.11,4.35-7.49,7.73-13.12,10.14-5.64,2.42-12.26,3.62-19.88,3.62-7.08,0-13.52-1.37-19.32-4.11s-10.44-6.44-13.93-11.11c-3.49-4.67-5.34-9.95-5.55-15.86h21.57,0Z"/><path fill="currentColor" d="M815.48,264.84v-47.29h17.55v-18.35h-17.55v-21.78l-34.42,40.14h12.84v51.81c0,11.05,8.95,20,20,20h21.7v-18.52h-14.12c-3.31,0-6-2.69-6-6h0Z"/><path fill="currentColor" d="M494.62,242.26c-2.36-3.92-5.58-7.03-9.66-9.34-1.08-.61-2.19-1.14-3.33-1.61.7-.44,1.36-.91,1.96-1.45,2.95-2.63,5.1-5.82,6.44-9.58,1.34-3.76,2.01-7.35,2.01-10.79,0-8.69-1.99-15.4-5.96-20.12s-9.31-8.02-16.02-9.9c-6.71-1.88-14.14-2.82-22.3-2.82h-34.29v112.7h40.41c8.16,0,15.59-.99,22.3-2.98,6.71-1.98,12.05-5.45,16.02-10.38,3.97-4.94,5.96-11.7,5.96-20.29,0-5.04-1.18-9.53-3.54-13.44ZM472.48,264.8c-1.88,2.09-4.46,3.52-7.73,4.27-3.28.75-6.9,1.13-10.87,1.13h-18.51v-74.54h12.4c4.08,0,7.73.32,10.95.97,3.22.64,5.77,1.96,7.65,3.95,1.88,1.99,2.82,4.91,2.82,8.77s-.94,6.79-2.82,8.78c-1.88,1.99-4.46,3.3-7.73,3.94-1.87.37-3.86.62-5.96.78l-11.25,19.19h12.46c4.08,0,7.73.35,10.95,1.05,3.22.7,5.77,2.01,7.65,3.94s2.82,4.83,2.82,8.69-.94,7-2.82,9.1v-.02Z"/></svg>
</a>
<button class="sidebar-toggle" id="sidebar-toggle" title="Toggle sidebar">
<svg class="icon-collapse" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"/></svg>
<svg class="icon-expand" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/></svg>
</button>
</div>
<div class="sidebar-title-group">
<span class="sidebar-library">regex</span>
</div>
</div>
<div class="sidebar-search">
<input type="text" id="file-search" placeholder="Search files..." autocomplete="off">
<button class="search-clear" id="search-clear" type="button" aria-label="Clear search">&times;</button>
</div>
<div class="tree-controls">
<button class="tree-control-btn" id="expand-all" title="Expand all">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 1a.5.5 0 01.5.5v5h5a.5.5 0 010 1h-5v5a.5.5 0 01-1 0v-5h-5a.5.5 0 010-1h5v-5A.5.5 0 018 1z"/></svg>
Expand
</button>
<button class="tree-control-btn" id="collapse-all" title="Collapse all">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M2 8a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11A.5.5 0 012 8z"/></svg>
Collapse
</button>
</div>
<nav class="sidebar-nav" id="file-tree">
<div class="tree-item is-folder">
<div class="tree-item-header">
<a href="index.include.d436eb0fd9de10b54a828ce6435f7e81.html" class="tree-folder-toggle" title="Open include">+</a>
<svg class="tree-icon tree-icon-folder" viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3H7.5a.25.25 0 01-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z"></path></svg>
<a class="tree-label" href="index.include.d436eb0fd9de10b54a828ce6435f7e81.html" title="include">include</a>
</div>
</div>
<div class="tree-item is-folder">
<div class="tree-item-header">
<a href="index.src.25d902c24283ab8cfbac54dfa101ad31.html" class="tree-folder-toggle" title="Open src">+</a>
<svg class="tree-icon tree-icon-folder" viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3H7.5a.25.25 0 01-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z"></path></svg>
<a class="tree-label" href="index.src.25d902c24283ab8cfbac54dfa101ad31.html" title="src">src</a>
</div>
</div>
</nav>
<div class="sidebar-resize-handle" id="sidebar-resize-handle"></div>
</aside>
<!-- Mobile sidebar backdrop -->
<div class="sidebar-backdrop" id="sidebar-backdrop"></div>
<!-- Main Content -->
<main class="main-content">
<header class="main-header">
<button class="mobile-menu-btn" id="mobile-menu-btn" title="Open menu">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/></svg>
</button>
<div class="breadcrumb">
<span class="breadcrumb-title">regex</span><span class="breadcrumb-label">GCC Code Coverage</span> </div>
<div class="header-actions">
</div>
<div class="view-toggle" id="view-toggle" style="display:none">
<button class="view-btn active" data-view="nested">Nested</button>
<button class="view-btn" data-view="flat">Flat</button>
</div>
<button class="theme-toggle" id="theme-toggle" title="Toggle theme">
<svg class="icon-moon" viewBox="0 0 16 16" fill="currentColor"><path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z"/></svg>
<svg class="icon-sun" viewBox="0 0 16 16" fill="currentColor"><path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/></svg>
</button>
<button class="settings-btn" id="settings-btn" title="Settings">
<svg viewBox="0 0 16 16" width="18" height="18" fill="currentColor"><path d="M8 4.754a3.246 3.246 0 100 6.492 3.246 3.246 0 000-6.492zM5.754 8a2.246 2.246 0 114.492 0 2.246 2.246 0 01-4.492 0z"/><path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 01-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 01-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 01.52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 011.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 011.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 01.52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 01-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 01-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 002.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 001.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 00-1.115 2.693l.16.291c.415.764-.421 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 00-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 00-2.692-1.115l-.292.16c-.764.415-1.6-.421-1.184-1.185l.159-.291A1.873 1.873 0 001.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 003.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 002.692-1.115l.094-.319z"/></svg>
</button>
<div class="settings-dropdown" id="settings-dropdown"></div>
</header>
<div class="content-wrapper">
<section class="summary-section">
<div class="summary-cards">
<div class="summary-card">
<div class="summary-card-header">
<h3>Lines</h3>
</div>
<div class="summary-card-body">
<div class="coverage-ring coverage-medium">
<svg viewBox="0 0 36 36">
<path class="ring-bg" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"/>
<path class="ring-fill" stroke-dasharray="89.4, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"/>
</svg>
<span class="ring-text">89.4%</span>
</div>
<div class="summary-stats">
<div class="stat-row">
<span class="stat-label">Hit</span>
<span class="stat-value">6554</span>
</div>
<div class="stat-row">
<span class="stat-label">Total</span>
<span class="stat-value">7330</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-card-header">
<h3>Functions</h3>
</div>
<div class="summary-card-body">
<div class="coverage-ring coverage-low">
<svg viewBox="0 0 36 36">
<path class="ring-bg" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"/>
<path class="ring-fill" stroke-dasharray="59.3, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"/>
</svg>
<span class="ring-text">59.3%</span>
</div>
<div class="summary-stats">
<div class="stat-row">
<span class="stat-label">Hit</span>
<span class="stat-value">4210</span>
</div>
<div class="stat-row">
<span class="stat-label">Total</span>
<span class="stat-value">7115</span>
</div>
</div>
</div>
</div>
</div>
<div class="coverage-legend">
<span class="legend-item coverage-high">High: &ge; 90.0%</span>
<span class="legend-item coverage-medium">Medium: &ge; 75.0%</span>
<span class="legend-item coverage-low">Low: &lt; 75.0%</span>
<span class="legend-separator"></span>
<a href="index.functions.html" class="legend-item legend-functions-link" title="List of all functions">
<span class="fx-icon" aria-hidden="true"><i>f</i>(x)</span>
List of functions
</a>
</div> </section>
<section class="main-section">
<div class="file-list-container no-branches no-conditions no-decisions no-calls">
<div class="file-list-header">
<div class="col-name sortable sorted-ascending" data-sort="filename">
Name
</div>
<div class="col-coverage sortable" data-sort="coverage">
Coverage
</div>
<div class="col-lines sortable" data-sort="lines">
Lines
</div>
<div class="col-functions sortable" data-sort="functions">
Functions
</div>
</div>
<div class="file-list-body" id="file-list">
<div class="file-row directory"
data-filename="include"
data-coverage="89.9"
data-lines="7108"
data-lines-exec="6391"
data-lines-coverage="89.9"
data-lines-class="coverage-medium"
data-functions="59.2"
data-functions-coverage="59.2"
data-functions-class="coverage-low"
data-branches="-"
data-branches-coverage="-"
data-branches-class="coverage-unknown"
data-conditions="-"
data-conditions-coverage="-"
data-conditions-class="coverage-unknown"
data-decisions="-"
data-decisions-coverage="-"
data-decisions-class="coverage-unknown"
data-calls="69.5"
data-calls-coverage="69.5"
data-calls-class="coverage-low"
data-diff="None">
<div class="col-name">
<span class="file-icon">
<svg viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3H7.5a.25.25 0 01-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z"></path></svg>
</span>
<a href="index.include.d436eb0fd9de10b54a828ce6435f7e81.html" title="include">include</a>
</div>
<div class="col-coverage">
<div class="coverage-bar-container">
<div class="coverage-bar coverage-medium" style="width: 89.9%"></div>
</div>
<span class="coverage-percent coverage-medium">89.9%</span>
</div>
<div class="col-lines">
<span class="stat-value">6391</span>
<span class="stat-separator">/</span>
<span class="stat-total">7108</span>
</div>
<div class="col-functions">
<span class="stat-value coverage-low">59.2%</span>
</div>
</div>
<div class="file-row directory"
data-filename="src"
data-coverage="73.4"
data-lines="222"
data-lines-exec="163"
data-lines-coverage="73.4"
data-lines-class="coverage-low"
data-functions="100.0"
data-functions-coverage="100.0"
data-functions-class="coverage-high"
data-branches="-"
data-branches-coverage="-"
data-branches-class="coverage-unknown"
data-conditions="-"
data-conditions-coverage="-"
data-conditions-class="coverage-unknown"
data-decisions="-"
data-decisions-coverage="-"
data-decisions-class="coverage-unknown"
data-calls="58.3"
data-calls-coverage="58.3"
data-calls-class="coverage-low"
data-diff="None">
<div class="col-name">
<span class="file-icon">
<svg viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3H7.5a.25.25 0 01-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z"></path></svg>
</span>
<a href="index.src.25d902c24283ab8cfbac54dfa101ad31.html" title="src">src</a>
</div>
<div class="col-coverage">
<div class="coverage-bar-container">
<div class="coverage-bar coverage-low" style="width: 73.4%"></div>
</div>
<span class="coverage-percent coverage-low">73.4%</span>
</div>
<div class="col-lines">
<span class="stat-value">163</span>
<span class="stat-separator">/</span>
<span class="stat-total">222</span>
</div>
<div class="col-functions">
<span class="stat-value coverage-high">100.0%</span>
</div>
</div>
</div>
</div> </section>
</div>
<footer class="main-footer">
Created using <a href="http://gcovr.com/en/main">GCOVR (Version 8.6+main)</a>
at 2026-05-22 16:53:31
</footer>
</main>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,857 @@
<!DOCTYPE html>
<html class="theme-green">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>include/boost/regex/v5/regex_merge.hpp - regex</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<script>
// Apply theme and font size immediately to prevent flash
(function() {
document.documentElement.classList.add('no-transitions');
var saved = localStorage.getItem('gcovr-theme');
var theme = (saved === 'light' || saved === 'dark') ? saved
: window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', theme);
document.documentElement.style.backgroundColor = theme === 'light' ? '#ffffff' : '#0d1117';
// Apply flat mode immediately to prevent sidebar flash
if (localStorage.getItem('gcovr-view-mode') === 'flat') {
document.documentElement.classList.add('early-flat-mode');
}
})();
</script>
<link rel="stylesheet" href="index.css"/>
<script src="index.js" charset="UTF-8"></script>
</head>
<body>
<div class="app-container">
<!-- Sidebar -->
<aside class="sidebar" id="sidebar"><script>if(localStorage.getItem('sidebar-collapsed')==='true'){document.currentScript.parentElement.classList.add('collapsed');}else{var sw=localStorage.getItem('gcovr-sidebar-width');if(sw)document.documentElement.style.setProperty('--sidebar-width',sw+'px');}</script>
<div class="sidebar-header">
<div class="sidebar-header-row">
<a href="index.html" class="sidebar-logo" title="Back to index">
<svg viewBox="150 150 700 160" class="boost-wordmark"><path fill="#ffa000" d="M292.45,152.89h-93.18l-46.59,80,12.63,21.69,46.57-79.99h47.07c20.07,0,36.38,16.18,36.38,36.07,0,8.46-3.54,18.29-10.84,22.4,7.11,5.3,10.54,13.73,10.54,22.01,0,19.88-16.32,36.06-36.38,36.06h-61.71l16.12-27.7h45.59c4.66,0,8.45-3.75,8.45-8.36s-3.57-8.16-8.05-8.35c-.13-.02-36.25,0-36.25,0l16.14-27.71s20.22.02,20.31,0c1.9-.06,3.63-.74,5-1.85,1.93-1.53,3.15-3.87,3.15-6.5,0-4.62-3.79-8.37-8.45-8.37h-30.03l-47.04,80.75,17.39,29.85h93.18l46.59-80-46.59-80h0Z"/><path fill="currentColor" d="M550.81,291.93c-9.23,0-17.31-2.01-24.23-6.04s-12.29-9.63-16.1-16.83c-3.81-7.19-5.72-15.4-5.72-24.63s1.9-17.6,5.72-24.79c3.81-7.19,9.18-12.82,16.1-16.91,6.92-4.08,15-6.12,24.23-6.12s17.44,2.04,24.31,6.12,12.21,9.72,16.02,16.91,5.72,15.46,5.72,24.79-1.91,17.44-5.72,24.63-9.15,12.8-16.02,16.83c-6.87,4.02-14.97,6.04-24.31,6.04ZM550.81,272.45c5.37,0,9.79-1.23,13.28-3.7,3.49-2.47,6.12-5.82,7.89-10.06s2.66-8.99,2.66-14.25-.89-10.2-2.66-14.49c-1.77-4.29-4.4-7.7-7.89-10.22-3.49-2.52-7.92-3.78-13.28-3.78s-9.82,1.26-13.36,3.78c-3.54,2.52-6.2,5.93-7.97,10.22-1.77,4.29-2.66,9.12-2.66,14.49s.89,10.01,2.66,14.25c1.77,4.24,4.43,7.59,7.97,10.06s7.99,3.7,13.36,3.7Z"/><path fill="currentColor" d="M648.53,291.93c-9.23,0-17.31-2.01-24.23-6.04s-12.29-9.63-16.1-16.83c-3.81-7.19-5.72-15.4-5.72-24.63s1.9-17.6,5.72-24.79c3.81-7.19,9.18-12.82,16.1-16.91,6.92-4.08,15-6.12,24.23-6.12s17.44,2.04,24.31,6.12,12.21,9.72,16.02,16.91,5.72,15.46,5.72,24.79-1.91,17.44-5.72,24.63-9.15,12.8-16.02,16.83c-6.87,4.02-14.97,6.04-24.31,6.04ZM648.53,272.45c5.37,0,9.79-1.23,13.28-3.7,3.49-2.47,6.12-5.82,7.89-10.06s2.66-8.99,2.66-14.25-.89-10.2-2.66-14.49c-1.77-4.29-4.4-7.7-7.89-10.22-3.49-2.52-7.92-3.78-13.28-3.78s-9.82,1.26-13.36,3.78c-3.54,2.52-6.2,5.93-7.97,10.22-1.77,4.29-2.66,9.12-2.66,14.49s.89,10.01,2.66,14.25c1.77,4.24,4.43,7.59,7.97,10.06s7.99,3.7,13.36,3.7Z"/><path fill="currentColor" d="M722.75,260.85c.54,4.62,2.55,7.86,6.04,9.74s7.49,2.82,11.99,2.82,8.21-.8,11.11-2.41c2.9-1.61,4.35-4.24,4.35-7.89,0-2.25-.99-4-2.98-5.23s-4.56-2.2-7.73-2.9c-3.17-.7-6.66-1.37-10.46-2.01-3.81-.64-7.65-1.5-11.51-2.58-3.86-1.07-7.41-2.58-10.63-4.51-3.22-1.93-5.8-4.53-7.73-7.81-1.93-3.27-2.9-7.49-2.9-12.64,0-4.83,1.55-9.47,4.67-13.93,3.11-4.45,7.49-8.05,13.12-10.79,5.63-2.74,12.1-4.11,19.4-4.11,6.55,0,12.61,1.32,18.19,3.95,5.58,2.63,10.06,6.25,13.44,10.87s5.07,9.98,5.07,16.1h-21.41c-.43-4.61-2.15-7.86-5.15-9.74-3.01-1.88-6.6-2.82-10.79-2.82-4.94,0-8.69.99-11.27,2.98s-3.86,4.48-3.86,7.49c0,2.47.99,4.4,2.98,5.8,1.98,1.4,4.56,2.47,7.73,3.22,3.16.75,6.68,1.42,10.55,2.01,3.86.59,7.7,1.4,11.51,2.42,3.81,1.02,7.33,2.47,10.55,4.35s5.8,4.4,7.73,7.57,2.9,7.27,2.9,12.32c0,5.69-1.56,10.71-4.67,15.05-3.11,4.35-7.49,7.73-13.12,10.14-5.64,2.42-12.26,3.62-19.88,3.62-7.08,0-13.52-1.37-19.32-4.11s-10.44-6.44-13.93-11.11c-3.49-4.67-5.34-9.95-5.55-15.86h21.57,0Z"/><path fill="currentColor" d="M815.48,264.84v-47.29h17.55v-18.35h-17.55v-21.78l-34.42,40.14h12.84v51.81c0,11.05,8.95,20,20,20h21.7v-18.52h-14.12c-3.31,0-6-2.69-6-6h0Z"/><path fill="currentColor" d="M494.62,242.26c-2.36-3.92-5.58-7.03-9.66-9.34-1.08-.61-2.19-1.14-3.33-1.61.7-.44,1.36-.91,1.96-1.45,2.95-2.63,5.1-5.82,6.44-9.58,1.34-3.76,2.01-7.35,2.01-10.79,0-8.69-1.99-15.4-5.96-20.12s-9.31-8.02-16.02-9.9c-6.71-1.88-14.14-2.82-22.3-2.82h-34.29v112.7h40.41c8.16,0,15.59-.99,22.3-2.98,6.71-1.98,12.05-5.45,16.02-10.38,3.97-4.94,5.96-11.7,5.96-20.29,0-5.04-1.18-9.53-3.54-13.44ZM472.48,264.8c-1.88,2.09-4.46,3.52-7.73,4.27-3.28.75-6.9,1.13-10.87,1.13h-18.51v-74.54h12.4c4.08,0,7.73.32,10.95.97,3.22.64,5.77,1.96,7.65,3.95,1.88,1.99,2.82,4.91,2.82,8.77s-.94,6.79-2.82,8.78c-1.88,1.99-4.46,3.3-7.73,3.94-1.87.37-3.86.62-5.96.78l-11.25,19.19h12.46c4.08,0,7.73.35,10.95,1.05,3.22.7,5.77,2.01,7.65,3.94s2.82,4.83,2.82,8.69-.94,7-2.82,9.1v-.02Z"/></svg>
</a>
<button class="sidebar-toggle" id="sidebar-toggle" title="Toggle sidebar">
<svg class="icon-collapse" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"/></svg>
<svg class="icon-expand" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/></svg>
</button>
</div>
<div class="sidebar-title-group">
<span class="sidebar-library">regex</span>
</div>
</div>
<div class="sidebar-search">
<input type="text" id="file-search" placeholder="Search files..." autocomplete="off">
<button class="search-clear" id="search-clear" type="button" aria-label="Clear search">&times;</button>
</div>
<div class="tree-controls">
<button class="tree-control-btn" id="expand-all" title="Expand all">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 1a.5.5 0 01.5.5v5h5a.5.5 0 010 1h-5v5a.5.5 0 01-1 0v-5h-5a.5.5 0 010-1h5v-5A.5.5 0 018 1z"/></svg>
Expand
</button>
<button class="tree-control-btn" id="collapse-all" title="Collapse all">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M2 8a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11A.5.5 0 012 8z"/></svg>
Collapse
</button>
</div>
<nav class="sidebar-nav" id="file-tree">
<div class="tree-item">
<div class="tree-item-header">
<a href="index.html" class="tree-toggle" title="Back to directory">
<span class="toggle-icon">&larr;</span>
</a>
<span class="tree-icon folder">
<svg viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3H7.5a.25.25 0 01-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z"></path></svg>
</span>
<a class="tree-label" href="index.html">Back to Index</a>
</div>
</div>
<div class="tree-item active">
<div class="tree-item-header">
<span class="tree-toggle-spacer"></span>
<span class="tree-icon file">
<svg viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-2.938-2.938zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path></svg>
</span>
<span class="tree-label">include/boost/regex/v5/regex_merge.hpp</span>
</div>
</div>
</nav>
<div class="sidebar-resize-handle" id="sidebar-resize-handle"></div>
</aside>
<!-- Mobile sidebar backdrop -->
<div class="sidebar-backdrop" id="sidebar-backdrop"></div>
<!-- Main Content -->
<main class="main-content">
<header class="main-header">
<button class="mobile-menu-btn" id="mobile-menu-btn" title="Open menu">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/></svg>
</button>
<div class="breadcrumb">
<a href="index.html" class="breadcrumb-home">Index</a><span class="separator">/</span><span class="current" title="include/boost/regex/v5/regex_merge.hpp">include / boost / regex / v5 / regex_merge.hpp</span> </div>
<div class="header-actions">
</div>
<div class="view-toggle" id="view-toggle" style="display:none">
<button class="view-btn active" data-view="nested">Nested</button>
<button class="view-btn" data-view="flat">Flat</button>
</div>
<button class="theme-toggle" id="theme-toggle" title="Toggle theme">
<svg class="icon-moon" viewBox="0 0 16 16" fill="currentColor"><path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z"/></svg>
<svg class="icon-sun" viewBox="0 0 16 16" fill="currentColor"><path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/></svg>
</button>
<button class="settings-btn" id="settings-btn" title="Settings">
<svg viewBox="0 0 16 16" width="18" height="18" fill="currentColor"><path d="M8 4.754a3.246 3.246 0 100 6.492 3.246 3.246 0 000-6.492zM5.754 8a2.246 2.246 0 114.492 0 2.246 2.246 0 01-4.492 0z"/><path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 01-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 01-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 01.52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 011.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 011.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 01.52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 01-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 01-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 002.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 001.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 00-1.115 2.693l.16.291c.415.764-.421 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 00-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 00-2.692-1.115l-.292.16c-.764.415-1.6-.421-1.184-1.185l.159-.291A1.873 1.873 0 001.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 003.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 002.692-1.115l.094-.319z"/></svg>
</button>
<div class="settings-dropdown" id="settings-dropdown"></div>
</header>
<div class="content-wrapper">
<section class="summary-section">
<div class="source-summary">
<div class="source-info">
<h2 class="source-filename">include/boost/regex/v5/regex_merge.hpp</h2>
<div class="source-stats">
<span class="stat coverage-high">
<strong>100.0%</strong> Lines (2/2)
</span>
<span class="stat coverage-high">
<strong>100.0%</strong> List of functions (1/1)
</span>
</div>
</div>
<div class="nav-hint">
<span><kbd>[</kbd> <kbd>]</kbd> prev/next file</span>
</div>
</div> </section>
<section class="main-section">
<div class="source-container no-branches">
<div class="source-header">
<span class="source-header-filename">regex_merge.hpp</span>
<div class="source-line-filters">
<button type="button" class="btn btn-sm button_toggle_coveredLine show_coveredLine" value="coveredLine" title="Toggle covered lines">
covered
</button>
<button type="button" class="btn btn-sm button_toggle_uncoveredLine show_uncoveredLine" value="uncoveredLine" title="Toggle uncovered lines">
uncovered
</button>
</div>
<div class="source-column-filters">
<button type="button" class="btn btn-sm col-toggle show-col" data-col="tla" title="Toggle TLA column">TLA</button>
<button type="button" class="btn btn-sm col-toggle show-col" data-col="count" title="Toggle Hits column">Hits</button>
</div>
<div class="source-nav-links">
<a class="nav-link nav-prev" href="index.regex_match.hpp.52d49d2882a598bc100172b30fdc9d28.html" title="Previous file">
<svg viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M8 2a.75.75 0 01.75.75v8.69l3.22-3.22a.75.75 0 111.06 1.06l-4.5 4.5a.75.75 0 01-1.06 0l-4.5-4.5a.75.75 0 011.06-1.06l3.22 3.22V2.75A.75.75 0 018 2z" transform="rotate(180 8 8)"/></svg>
</a>
<a class="nav-link nav-next" href="index.regex_raw_buffer.hpp.77701f68cbde88eced9e7f01d308832b.html" title="Next file">
<svg viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M8 2a.75.75 0 01.75.75v8.69l3.22-3.22a.75.75 0 111.06 1.06l-4.5 4.5a.75.75 0 01-1.06 0l-4.5-4.5a.75.75 0 011.06-1.06l3.22 3.22V2.75A.75.75 0 018 2z"/></svg>
</a>
</div>
</div>
<details class="source-functions">
<summary class="source-functions-toggle">
<span class="fx-icon"><i>f</i>(x)</span>
Functions (1)
</summary>
<div class="source-functions-list">
<div class="source-function-header">
<span class="source-function-col-name" data-sort="name">Function</span>
<span class="source-function-col-stat" data-sort="calls">Calls</span>
<span class="source-function-col-stat" data-sort="lines">Lines</span>
<span class="source-function-col-stat" data-sort="blocks">Blocks</span>
</div>
<a href="#l28" class="source-function-item"
data-name="std::ostream_iterator&lt;char, char, std::char_traits&lt;char&gt; &gt; boost::regex_merge&lt;std::ostream_iterator&lt;char, char, std::char_traits&lt;char&gt; &gt;, __gnu_cxx::__normal_iterator&lt;char*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt;, char&gt;(std::ostream_iterator&lt;char, char, std::char_traits&lt;char&gt; &gt;, __gnu_cxx::__normal_iterator&lt;char*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, __gnu_cxx::__normal_iterator&lt;char*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, boost::basic_regex&lt;char, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt; const&amp;, char const*, boost::regex_constants::_match_flags)" data-calls="2" data-lines="100.0" data-branches="-1" data-blocks="100.0">
<span class="source-function-col-name">
<span class="source-function-name">std::ostream_iterator&lt;char, char, std::char_traits&lt;char&gt; &gt; boost::regex_merge&lt;std::ostream_iterator&lt;char, char, std::char_traits&lt;char&gt; &gt;, __gnu_cxx::__normal_iterator&lt;char*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt;, char&gt;(std::ostream_iterator&lt;char, char, std::char_traits&lt;char&gt; &gt;, __gnu_cxx::__normal_iterator&lt;char*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, __gnu_cxx::__normal_iterator&lt;char*, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;, boost::basic_regex&lt;char, boost::regex_traits&lt;char, boost::cpp_regex_traits&lt;char&gt; &gt; &gt; const&amp;, char const*, boost::regex_constants::_match_flags)</span>
<span class="source-function-line">:28</span>
</span>
<span class="source-function-col-stat">2x</span>
<span class="source-function-col-stat cov-high">100.0%</span>
<span class="source-function-col-stat cov-high">100.0%</span>
</a>
</div>
</details>
<div class="source-table-container">
<table class="source-table">
<thead>
<tr>
<th class="col-lineno">Line</th>
<th class="col-tla">TLA</th>
<th class="col-count">Hits</th>
<th class="col-source">Source Code</th>
</tr>
</thead>
<tbody>
<tr class="source-line">
<td class="col-lineno">
<a id="l1">1</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm">/*</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l2">2</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> *</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l3">3</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * Copyright (c) 1998-2002</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l4">4</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * John Maddock</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l5">5</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> *</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l6">6</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * Use, modification and distribution are subject to the </span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l7">7</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * Boost Software License, Version 1.0. (See accompanying file </span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l8">8</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l9">9</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> *</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l10">10</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> */</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l11">11</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l12">12</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="cm">/*</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l13">13</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * LOCATION: see http://www.boost.org for most recent version.</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l14">14</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * FILE regex_format.hpp</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l15">15</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * VERSION see &lt;boost/version.hpp&gt;</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l16">16</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * DESCRIPTION: Provides formatting output routines for search and replace</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l17">17</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * operations. Note this is an internal header file included</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l18">18</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> * by regex.hpp, do not include on its own.</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l19">19</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cm"> */</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l20">20</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l21">21</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cp">#ifndef BOOST_REGEX_V5_REGEX_MERGE_HPP</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l22">22</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cp">#define BOOST_REGEX_V5_REGEX_MERGE_HPP</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l23">23</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l24">24</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l25">25</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="k">namespace</span><span class="w"> </span><span class="nn">boost</span><span class="p">{</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l26">26</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l27">27</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="n">BOOST_REGEX_MODULE_EXPORT</span><span class="w"> </span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">OutputIterator</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Iterator</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">traits</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">charT</span><span class="o">&gt;</span></td>
</tr>
<tr class="source-line coveredLine show_coveredLine">
<td class="col-lineno">
<a id="l28">28</a>
</td>
<td class="col-tla"></td>
<td class="col-count coveredLine">
2x </td>
<td class="col-source"><span class="kr">inline</span><span class="w"> </span><span class="n">OutputIterator</span><span class="w"> </span><span class="n">regex_merge</span><span class="p">(</span><span class="n">OutputIterator</span><span class="w"> </span><span class="n">out</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l29">29</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="n">Iterator</span><span class="w"> </span><span class="n">first</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l30">30</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="n">Iterator</span><span class="w"> </span><span class="n">last</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l31">31</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">basic_regex</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">e</span><span class="p">,</span><span class="w"> </span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l32">32</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">charT</span><span class="o">*</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span><span class="w"> </span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l33">33</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="n">match_flag_type</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">match_default</span><span class="p">)</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l34">34</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">{</span></td>
</tr>
<tr class="source-line coveredLine show_coveredLine">
<td class="col-lineno">
<a id="l35">35</a>
</td>
<td class="col-tla"></td>
<td class="col-count coveredLine">
2x </td>
<td class="col-source"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">regex_replace</span><span class="p">(</span><span class="n">out</span><span class="p">,</span><span class="w"> </span><span class="n">first</span><span class="p">,</span><span class="w"> </span><span class="n">last</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l36">36</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">}</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l37">37</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l38">38</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="n">BOOST_REGEX_MODULE_EXPORT</span><span class="w"> </span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">OutputIterator</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Iterator</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">traits</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">charT</span><span class="o">&gt;</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l39">39</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="kr">inline</span><span class="w"> </span><span class="n">OutputIterator</span><span class="w"> </span><span class="n">regex_merge</span><span class="p">(</span><span class="n">OutputIterator</span><span class="w"> </span><span class="n">out</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l40">40</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="n">Iterator</span><span class="w"> </span><span class="n">first</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l41">41</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="n">Iterator</span><span class="w"> </span><span class="n">last</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l42">42</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">basic_regex</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">e</span><span class="p">,</span><span class="w"> </span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l43">43</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l44">44</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="n">match_flag_type</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">match_default</span><span class="p">)</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l45">45</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">{</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l46">46</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">regex_merge</span><span class="p">(</span><span class="n">out</span><span class="p">,</span><span class="w"> </span><span class="n">first</span><span class="p">,</span><span class="w"> </span><span class="n">last</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">fmt</span><span class="p">.</span><span class="n">c_str</span><span class="p">(),</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l47">47</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">}</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l48">48</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l49">49</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="n">BOOST_REGEX_MODULE_EXPORT</span><span class="w"> </span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">traits</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">charT</span><span class="o">&gt;</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l50">50</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="kr">inline</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="o">&gt;</span><span class="w"> </span><span class="n">regex_merge</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">s</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l51">51</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">basic_regex</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">e</span><span class="p">,</span><span class="w"> </span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l52">52</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">charT</span><span class="o">*</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l53">53</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="n">match_flag_type</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">match_default</span><span class="p">)</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l54">54</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">{</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l55">55</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">regex_replace</span><span class="p">(</span><span class="n">s</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l56">56</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">}</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l57">57</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l58">58</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="n">BOOST_REGEX_MODULE_EXPORT</span><span class="w"> </span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">traits</span><span class="p">,</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">charT</span><span class="o">&gt;</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l59">59</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="kr">inline</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="o">&gt;</span><span class="w"> </span><span class="n">regex_merge</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">s</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l60">60</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">basic_regex</span><span class="o">&lt;</span><span class="n">charT</span><span class="p">,</span><span class="w"> </span><span class="n">traits</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">e</span><span class="p">,</span><span class="w"> </span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l61">61</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">basic_string</span><span class="o">&lt;</span><span class="n">charT</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l62">62</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="n">match_flag_type</span><span class="w"> </span><span class="n">flags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">match_default</span><span class="p">)</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l63">63</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">{</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l64">64</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">regex_replace</span><span class="p">(</span><span class="n">s</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">fmt</span><span class="p">,</span><span class="w"> </span><span class="n">flags</span><span class="p">);</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l65">65</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">}</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l66">66</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l67">67</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="p">}</span><span class="w"> </span><span class="c1">// namespace boost</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l68">68</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l69">69</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"><span class="cp">#endif </span><span class="c1">// BOOST_REGEX_V5_REGEX_MERGE_HPP</span></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l70">70</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l71">71</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
<tr class="source-line">
<td class="col-lineno">
<a id="l72">72</a>
</td>
<td class="col-tla"></td>
<td class="col-count">
</td>
<td class="col-source"></td>
</tr>
</tbody>
</table>
</div>
</div> </section>
</div>
<footer class="main-footer">
Created using <a href="http://gcovr.com/en/main">GCOVR (Version 8.6+main)</a>
at 2026-05-22 16:53:31
</footer>
</main>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,295 @@
<!DOCTYPE html>
<html class="theme-green">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>src/ - regex</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<script>
// Apply theme and font size immediately to prevent flash
(function() {
document.documentElement.classList.add('no-transitions');
var saved = localStorage.getItem('gcovr-theme');
var theme = (saved === 'light' || saved === 'dark') ? saved
: window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', theme);
document.documentElement.style.backgroundColor = theme === 'light' ? '#ffffff' : '#0d1117';
// Apply flat mode immediately to prevent sidebar flash
if (localStorage.getItem('gcovr-view-mode') === 'flat') {
document.documentElement.classList.add('early-flat-mode');
}
})();
</script>
<link rel="stylesheet" href="index.css"/>
<script src="index.js" charset="UTF-8"></script>
</head>
<body>
<div class="app-container">
<!-- Sidebar -->
<aside class="sidebar" id="sidebar"><script>if(localStorage.getItem('sidebar-collapsed')==='true'){document.currentScript.parentElement.classList.add('collapsed');}else{var sw=localStorage.getItem('gcovr-sidebar-width');if(sw)document.documentElement.style.setProperty('--sidebar-width',sw+'px');}</script>
<div class="sidebar-header">
<div class="sidebar-header-row">
<a href="index.html" class="sidebar-logo" title="Back to index">
<svg viewBox="150 150 700 160" class="boost-wordmark"><path fill="#ffa000" d="M292.45,152.89h-93.18l-46.59,80,12.63,21.69,46.57-79.99h47.07c20.07,0,36.38,16.18,36.38,36.07,0,8.46-3.54,18.29-10.84,22.4,7.11,5.3,10.54,13.73,10.54,22.01,0,19.88-16.32,36.06-36.38,36.06h-61.71l16.12-27.7h45.59c4.66,0,8.45-3.75,8.45-8.36s-3.57-8.16-8.05-8.35c-.13-.02-36.25,0-36.25,0l16.14-27.71s20.22.02,20.31,0c1.9-.06,3.63-.74,5-1.85,1.93-1.53,3.15-3.87,3.15-6.5,0-4.62-3.79-8.37-8.45-8.37h-30.03l-47.04,80.75,17.39,29.85h93.18l46.59-80-46.59-80h0Z"/><path fill="currentColor" d="M550.81,291.93c-9.23,0-17.31-2.01-24.23-6.04s-12.29-9.63-16.1-16.83c-3.81-7.19-5.72-15.4-5.72-24.63s1.9-17.6,5.72-24.79c3.81-7.19,9.18-12.82,16.1-16.91,6.92-4.08,15-6.12,24.23-6.12s17.44,2.04,24.31,6.12,12.21,9.72,16.02,16.91,5.72,15.46,5.72,24.79-1.91,17.44-5.72,24.63-9.15,12.8-16.02,16.83c-6.87,4.02-14.97,6.04-24.31,6.04ZM550.81,272.45c5.37,0,9.79-1.23,13.28-3.7,3.49-2.47,6.12-5.82,7.89-10.06s2.66-8.99,2.66-14.25-.89-10.2-2.66-14.49c-1.77-4.29-4.4-7.7-7.89-10.22-3.49-2.52-7.92-3.78-13.28-3.78s-9.82,1.26-13.36,3.78c-3.54,2.52-6.2,5.93-7.97,10.22-1.77,4.29-2.66,9.12-2.66,14.49s.89,10.01,2.66,14.25c1.77,4.24,4.43,7.59,7.97,10.06s7.99,3.7,13.36,3.7Z"/><path fill="currentColor" d="M648.53,291.93c-9.23,0-17.31-2.01-24.23-6.04s-12.29-9.63-16.1-16.83c-3.81-7.19-5.72-15.4-5.72-24.63s1.9-17.6,5.72-24.79c3.81-7.19,9.18-12.82,16.1-16.91,6.92-4.08,15-6.12,24.23-6.12s17.44,2.04,24.31,6.12,12.21,9.72,16.02,16.91,5.72,15.46,5.72,24.79-1.91,17.44-5.72,24.63-9.15,12.8-16.02,16.83c-6.87,4.02-14.97,6.04-24.31,6.04ZM648.53,272.45c5.37,0,9.79-1.23,13.28-3.7,3.49-2.47,6.12-5.82,7.89-10.06s2.66-8.99,2.66-14.25-.89-10.2-2.66-14.49c-1.77-4.29-4.4-7.7-7.89-10.22-3.49-2.52-7.92-3.78-13.28-3.78s-9.82,1.26-13.36,3.78c-3.54,2.52-6.2,5.93-7.97,10.22-1.77,4.29-2.66,9.12-2.66,14.49s.89,10.01,2.66,14.25c1.77,4.24,4.43,7.59,7.97,10.06s7.99,3.7,13.36,3.7Z"/><path fill="currentColor" d="M722.75,260.85c.54,4.62,2.55,7.86,6.04,9.74s7.49,2.82,11.99,2.82,8.21-.8,11.11-2.41c2.9-1.61,4.35-4.24,4.35-7.89,0-2.25-.99-4-2.98-5.23s-4.56-2.2-7.73-2.9c-3.17-.7-6.66-1.37-10.46-2.01-3.81-.64-7.65-1.5-11.51-2.58-3.86-1.07-7.41-2.58-10.63-4.51-3.22-1.93-5.8-4.53-7.73-7.81-1.93-3.27-2.9-7.49-2.9-12.64,0-4.83,1.55-9.47,4.67-13.93,3.11-4.45,7.49-8.05,13.12-10.79,5.63-2.74,12.1-4.11,19.4-4.11,6.55,0,12.61,1.32,18.19,3.95,5.58,2.63,10.06,6.25,13.44,10.87s5.07,9.98,5.07,16.1h-21.41c-.43-4.61-2.15-7.86-5.15-9.74-3.01-1.88-6.6-2.82-10.79-2.82-4.94,0-8.69.99-11.27,2.98s-3.86,4.48-3.86,7.49c0,2.47.99,4.4,2.98,5.8,1.98,1.4,4.56,2.47,7.73,3.22,3.16.75,6.68,1.42,10.55,2.01,3.86.59,7.7,1.4,11.51,2.42,3.81,1.02,7.33,2.47,10.55,4.35s5.8,4.4,7.73,7.57,2.9,7.27,2.9,12.32c0,5.69-1.56,10.71-4.67,15.05-3.11,4.35-7.49,7.73-13.12,10.14-5.64,2.42-12.26,3.62-19.88,3.62-7.08,0-13.52-1.37-19.32-4.11s-10.44-6.44-13.93-11.11c-3.49-4.67-5.34-9.95-5.55-15.86h21.57,0Z"/><path fill="currentColor" d="M815.48,264.84v-47.29h17.55v-18.35h-17.55v-21.78l-34.42,40.14h12.84v51.81c0,11.05,8.95,20,20,20h21.7v-18.52h-14.12c-3.31,0-6-2.69-6-6h0Z"/><path fill="currentColor" d="M494.62,242.26c-2.36-3.92-5.58-7.03-9.66-9.34-1.08-.61-2.19-1.14-3.33-1.61.7-.44,1.36-.91,1.96-1.45,2.95-2.63,5.1-5.82,6.44-9.58,1.34-3.76,2.01-7.35,2.01-10.79,0-8.69-1.99-15.4-5.96-20.12s-9.31-8.02-16.02-9.9c-6.71-1.88-14.14-2.82-22.3-2.82h-34.29v112.7h40.41c8.16,0,15.59-.99,22.3-2.98,6.71-1.98,12.05-5.45,16.02-10.38,3.97-4.94,5.96-11.7,5.96-20.29,0-5.04-1.18-9.53-3.54-13.44ZM472.48,264.8c-1.88,2.09-4.46,3.52-7.73,4.27-3.28.75-6.9,1.13-10.87,1.13h-18.51v-74.54h12.4c4.08,0,7.73.32,10.95.97,3.22.64,5.77,1.96,7.65,3.95,1.88,1.99,2.82,4.91,2.82,8.77s-.94,6.79-2.82,8.78c-1.88,1.99-4.46,3.3-7.73,3.94-1.87.37-3.86.62-5.96.78l-11.25,19.19h12.46c4.08,0,7.73.35,10.95,1.05,3.22.7,5.77,2.01,7.65,3.94s2.82,4.83,2.82,8.69-.94,7-2.82,9.1v-.02Z"/></svg>
</a>
<button class="sidebar-toggle" id="sidebar-toggle" title="Toggle sidebar">
<svg class="icon-collapse" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z"/></svg>
<svg class="icon-expand" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"/></svg>
</button>
</div>
<div class="sidebar-title-group">
<span class="sidebar-library">regex</span>
</div>
</div>
<div class="sidebar-search">
<input type="text" id="file-search" placeholder="Search files..." autocomplete="off">
<button class="search-clear" id="search-clear" type="button" aria-label="Clear search">&times;</button>
</div>
<div class="tree-controls">
<button class="tree-control-btn" id="expand-all" title="Expand all">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M8 1a.5.5 0 01.5.5v5h5a.5.5 0 010 1h-5v5a.5.5 0 01-1 0v-5h-5a.5.5 0 010-1h5v-5A.5.5 0 018 1z"/></svg>
Expand
</button>
<button class="tree-control-btn" id="collapse-all" title="Collapse all">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M2 8a.5.5 0 01.5-.5h11a.5.5 0 010 1h-11A.5.5 0 012 8z"/></svg>
Collapse
</button>
</div>
<nav class="sidebar-nav" id="file-tree">
<div class="tree-item ">
<div class="tree-item-header">
<span class="tree-spacer"></span>
<svg class="tree-icon tree-icon-file" viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-2.938-2.938zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path></svg>
<a class="tree-label" href="index.posix_api.cpp.cfc7145cfaa87ceb158ee21e8fa5193a.html" title="posix_api.cpp">posix_api.cpp</a>
</div>
</div>
<div class="tree-item ">
<div class="tree-item-header">
<span class="tree-spacer"></span>
<svg class="tree-icon tree-icon-file" viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-2.938-2.938zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path></svg>
<a class="tree-label" href="index.wide_posix_api.cpp.5d708c8c14b8fa1710211bdab41e2b13.html" title="wide_posix_api.cpp">wide_posix_api.cpp</a>
</div>
</div>
</nav>
<div class="sidebar-resize-handle" id="sidebar-resize-handle"></div>
</aside>
<!-- Mobile sidebar backdrop -->
<div class="sidebar-backdrop" id="sidebar-backdrop"></div>
<!-- Main Content -->
<main class="main-content">
<header class="main-header">
<button class="mobile-menu-btn" id="mobile-menu-btn" title="Open menu">
<svg viewBox="0 0 16 16" fill="currentColor"><path d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/></svg>
</button>
<div class="breadcrumb">
<a href="index.html" class="breadcrumb-home">regex</a><span class="separator">/</span><span class="current" title="src/">src / </span> </div>
<div class="header-actions">
</div>
<div class="view-toggle" id="view-toggle" style="display:none">
<button class="view-btn active" data-view="nested">Nested</button>
<button class="view-btn" data-view="flat">Flat</button>
</div>
<button class="theme-toggle" id="theme-toggle" title="Toggle theme">
<svg class="icon-moon" viewBox="0 0 16 16" fill="currentColor"><path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z"/></svg>
<svg class="icon-sun" viewBox="0 0 16 16" fill="currentColor"><path d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"/></svg>
</button>
<button class="settings-btn" id="settings-btn" title="Settings">
<svg viewBox="0 0 16 16" width="18" height="18" fill="currentColor"><path d="M8 4.754a3.246 3.246 0 100 6.492 3.246 3.246 0 000-6.492zM5.754 8a2.246 2.246 0 114.492 0 2.246 2.246 0 01-4.492 0z"/><path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 01-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 01-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 01.52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 011.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 011.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 01.52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 01-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 01-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 002.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 001.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 00-1.115 2.693l.16.291c.415.764-.421 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 00-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 00-2.692-1.115l-.292.16c-.764.415-1.6-.421-1.184-1.185l.159-.291A1.873 1.873 0 001.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 003.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 002.692-1.115l.094-.319z"/></svg>
</button>
<div class="settings-dropdown" id="settings-dropdown"></div>
</header>
<div class="content-wrapper">
<section class="summary-section">
<div class="summary-cards">
<div class="summary-card">
<div class="summary-card-header">
<h3>Lines</h3>
</div>
<div class="summary-card-body">
<div class="coverage-ring coverage-medium">
<svg viewBox="0 0 36 36">
<path class="ring-bg" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"/>
<path class="ring-fill" stroke-dasharray="89.4, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"/>
</svg>
<span class="ring-text">89.4%</span>
</div>
<div class="summary-stats">
<div class="stat-row">
<span class="stat-label">Hit</span>
<span class="stat-value">6554</span>
</div>
<div class="stat-row">
<span class="stat-label">Total</span>
<span class="stat-value">7330</span>
</div>
</div>
</div>
</div>
<div class="summary-card">
<div class="summary-card-header">
<h3>Functions</h3>
</div>
<div class="summary-card-body">
<div class="coverage-ring coverage-low">
<svg viewBox="0 0 36 36">
<path class="ring-bg" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"/>
<path class="ring-fill" stroke-dasharray="59.3, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"/>
</svg>
<span class="ring-text">59.3%</span>
</div>
<div class="summary-stats">
<div class="stat-row">
<span class="stat-label">Hit</span>
<span class="stat-value">4210</span>
</div>
<div class="stat-row">
<span class="stat-label">Total</span>
<span class="stat-value">7115</span>
</div>
</div>
</div>
</div>
</div>
<div class="coverage-legend">
<span class="legend-item coverage-high">High: &ge; 90.0%</span>
<span class="legend-item coverage-medium">Medium: &ge; 75.0%</span>
<span class="legend-item coverage-low">Low: &lt; 75.0%</span>
<span class="legend-separator"></span>
<a href="index.functions.html" class="legend-item legend-functions-link" title="List of all functions">
<span class="fx-icon" aria-hidden="true"><i>f</i>(x)</span>
List of functions
</a>
</div> </section>
<section class="main-section">
<div class="file-list-container no-branches no-conditions no-decisions no-calls">
<div class="file-list-header">
<div class="col-name sortable sorted-ascending" data-sort="filename">
Name
</div>
<div class="col-coverage sortable" data-sort="coverage">
Coverage
</div>
<div class="col-lines sortable" data-sort="lines">
Lines
</div>
<div class="col-functions sortable" data-sort="functions">
Functions
</div>
</div>
<div class="file-list-body" id="file-list">
<div class="file-row file"
data-filename="posix_api.cpp"
data-coverage="72.6"
data-lines="113"
data-lines-exec="82"
data-lines-coverage="72.6"
data-lines-class="coverage-low"
data-functions="100.0"
data-functions-coverage="100.0"
data-functions-class="coverage-high"
data-branches="-"
data-branches-coverage="-"
data-branches-class="coverage-unknown"
data-conditions="-"
data-conditions-coverage="-"
data-conditions-class="coverage-unknown"
data-decisions="-"
data-decisions-coverage="-"
data-decisions-class="coverage-unknown"
data-calls="57.7"
data-calls-coverage="57.7"
data-calls-class="coverage-low"
data-diff="UNDEFINED">
<div class="col-name">
<span class="file-icon">
<svg viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path></svg>
</span>
<a href="index.posix_api.cpp.cfc7145cfaa87ceb158ee21e8fa5193a.html" title="posix_api.cpp">posix_api.cpp</a>
</div>
<div class="col-coverage">
<div class="coverage-bar-container">
<div class="coverage-bar coverage-low" style="width: 72.6%"></div>
</div>
<span class="coverage-percent coverage-low">72.6%</span>
</div>
<div class="col-lines">
<span class="stat-value">82</span>
<span class="stat-separator">/</span>
<span class="stat-total">113</span>
</div>
<div class="col-functions">
<span class="stat-value coverage-high">100.0%</span>
</div>
</div>
<div class="file-row file"
data-filename="wide_posix_api.cpp"
data-coverage="74.3"
data-lines="109"
data-lines-exec="81"
data-lines-coverage="74.3"
data-lines-class="coverage-low"
data-functions="100.0"
data-functions-coverage="100.0"
data-functions-class="coverage-high"
data-branches="-"
data-branches-coverage="-"
data-branches-class="coverage-unknown"
data-conditions="-"
data-conditions-coverage="-"
data-conditions-class="coverage-unknown"
data-decisions="-"
data-decisions-coverage="-"
data-decisions-class="coverage-unknown"
data-calls="58.9"
data-calls-coverage="58.9"
data-calls-class="coverage-low"
data-diff="UNDEFINED">
<div class="col-name">
<span class="file-icon">
<svg viewBox="0 0 16 16" width="16" height="16"><path fill="currentColor" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path></svg>
</span>
<a href="index.wide_posix_api.cpp.5d708c8c14b8fa1710211bdab41e2b13.html" title="wide_posix_api.cpp">wide_posix_api.cpp</a>
</div>
<div class="col-coverage">
<div class="coverage-bar-container">
<div class="coverage-bar coverage-low" style="width: 74.3%"></div>
</div>
<span class="coverage-percent coverage-low">74.3%</span>
</div>
<div class="col-lines">
<span class="stat-value">81</span>
<span class="stat-separator">/</span>
<span class="stat-total">109</span>
</div>
<div class="col-functions">
<span class="stat-value coverage-high">100.0%</span>
</div>
</div>
</div>
</div> </section>
</div>
<footer class="main-footer">
Created using <a href="http://gcovr.com/en/main">GCOVR (Version 8.6+main)</a>
at 2026-05-22 16:53:31
</footer>
</main>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+423
View File
@@ -0,0 +1,423 @@
{
"root": "../../boost-root",
"gcovr/summary_format_version": "0.6",
"files": [
{
"filename": "include/boost/regex/v5/basic_regex.hpp",
"line_total": 205,
"line_covered": 200,
"line_percent": 97.6,
"function_total": 352,
"function_covered": 341,
"function_percent": 96.9,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/basic_regex_creator.hpp",
"line_total": 806,
"line_covered": 793,
"line_percent": 98.4,
"function_total": 371,
"function_covered": 331,
"function_percent": 89.2,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/basic_regex_parser.hpp",
"line_total": 1796,
"line_covered": 1582,
"line_percent": 88.1,
"function_total": 239,
"function_covered": 200,
"function_percent": 83.7,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/c_regex_traits.hpp",
"line_total": 167,
"line_covered": 134,
"line_percent": 80.2,
"function_total": 20,
"function_covered": 20,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/cpp_regex_traits.hpp",
"line_total": 342,
"line_covered": 211,
"line_percent": 61.7,
"function_total": 81,
"function_covered": 72,
"function_percent": 88.9,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/icu.hpp",
"line_total": 371,
"line_covered": 310,
"line_percent": 83.6,
"function_total": 192,
"function_covered": 97,
"function_percent": 50.5,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/match_flags.hpp",
"line_total": 10,
"line_covered": 10,
"line_percent": 100.0,
"function_total": 5,
"function_covered": 5,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/match_results.hpp",
"line_total": 307,
"line_covered": 273,
"line_percent": 88.9,
"function_total": 771,
"function_covered": 471,
"function_percent": 61.1,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/mem_block_cache.hpp",
"line_total": 29,
"line_covered": 29,
"line_percent": 100.0,
"function_total": 8,
"function_covered": 8,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/object_cache.hpp",
"line_total": 44,
"line_covered": 42,
"line_percent": 95.5,
"function_total": 6,
"function_covered": 6,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/pattern_except.hpp",
"line_total": 20,
"line_covered": 17,
"line_percent": 85.0,
"function_total": 14,
"function_covered": 6,
"function_percent": 42.9,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/perl_matcher.hpp",
"line_total": 137,
"line_covered": 134,
"line_percent": 97.8,
"function_total": 356,
"function_covered": 221,
"function_percent": 62.1,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/perl_matcher_common.hpp",
"line_total": 416,
"line_covered": 399,
"line_percent": 95.9,
"function_total": 1055,
"function_covered": 477,
"function_percent": 45.2,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/perl_matcher_non_recursive.hpp",
"line_total": 910,
"line_covered": 873,
"line_percent": 95.9,
"function_total": 1910,
"function_covered": 930,
"function_percent": 48.7,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/primary_transform.hpp",
"line_total": 31,
"line_covered": 17,
"line_percent": 54.8,
"function_total": 8,
"function_covered": 6,
"function_percent": 75.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_format.hpp",
"line_total": 420,
"line_covered": 403,
"line_percent": 96.0,
"function_total": 458,
"function_covered": 196,
"function_percent": 42.8,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_grep.hpp",
"line_total": 26,
"line_covered": 23,
"line_percent": 88.5,
"function_total": 10,
"function_covered": 10,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_iterator.hpp",
"line_total": 48,
"line_covered": 48,
"line_percent": 100.0,
"function_total": 242,
"function_covered": 152,
"function_percent": 62.8,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_match.hpp",
"line_total": 20,
"line_covered": 20,
"line_percent": 100.0,
"function_total": 28,
"function_covered": 20,
"function_percent": 71.4,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_merge.hpp",
"line_total": 2,
"line_covered": 2,
"line_percent": 100.0,
"function_total": 1,
"function_covered": 1,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_raw_buffer.hpp",
"line_total": 45,
"line_covered": 45,
"line_percent": 100.0,
"function_total": 9,
"function_covered": 9,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_replace.hpp",
"line_total": 25,
"line_covered": 24,
"line_percent": 96.0,
"function_total": 12,
"function_covered": 12,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_search.hpp",
"line_total": 23,
"line_covered": 21,
"line_percent": 91.3,
"function_total": 65,
"function_covered": 50,
"function_percent": 76.9,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_split.hpp",
"line_total": 38,
"line_covered": 37,
"line_percent": 97.4,
"function_total": 9,
"function_covered": 9,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_token_iterator.hpp",
"line_total": 98,
"line_covered": 96,
"line_percent": 98.0,
"function_total": 89,
"function_covered": 88,
"function_percent": 98.9,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_traits.hpp",
"line_total": 18,
"line_covered": 18,
"line_percent": 100.0,
"function_total": 32,
"function_covered": 31,
"function_percent": 96.9,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_traits_defaults.hpp",
"line_total": 86,
"line_covered": 83,
"line_percent": 96.5,
"function_total": 42,
"function_covered": 38,
"function_percent": 90.5,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/regex_workaround.hpp",
"line_total": 6,
"line_covered": 5,
"line_percent": 83.3,
"function_total": 1,
"function_covered": 1,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/sub_match.hpp",
"line_total": 166,
"line_covered": 162,
"line_percent": 97.6,
"function_total": 207,
"function_covered": 150,
"function_percent": 72.5,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/u32regex_iterator.hpp",
"line_total": 55,
"line_covered": 49,
"line_percent": 89.1,
"function_total": 90,
"function_covered": 27,
"function_percent": 30.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/u32regex_token_iterator.hpp",
"line_total": 113,
"line_covered": 43,
"line_percent": 38.1,
"function_total": 97,
"function_covered": 12,
"function_percent": 12.4,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "include/boost/regex/v5/unicode_iterator.hpp",
"line_total": 328,
"line_covered": 288,
"line_percent": 87.8,
"function_total": 314,
"function_covered": 205,
"function_percent": 65.3,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "src/posix_api.cpp",
"line_total": 113,
"line_covered": 82,
"line_percent": 72.6,
"function_total": 4,
"function_covered": 4,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
},
{
"filename": "src/wide_posix_api.cpp",
"line_total": 109,
"line_covered": 81,
"line_percent": 74.3,
"function_total": 4,
"function_covered": 4,
"function_percent": 100.0,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": null
}
],
"line_total": 7330,
"line_covered": 6554,
"line_percent": 89.4,
"function_total": 7102,
"function_covered": 4210,
"function_percent": 59.3,
"branch_total": 0,
"branch_covered": 0,
"branch_percent": 0.0
}
+631
View File
@@ -0,0 +1,631 @@
[
{
"name": "include",
"coverage": "89.9",
"coverageClass": "coverage-medium",
"linesTotal": "7108",
"linesExec": "6391",
"linesCoverage": "89.9",
"linesClass": "coverage-medium",
"functionsCoverage": "59.2",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": true,
"link": "index.include.d436eb0fd9de10b54a828ce6435f7e81.html",
"children": [
{
"name": "boost",
"coverage": "",
"coverageClass": "coverage-unknown",
"linesTotal": "",
"linesExec": "",
"linesCoverage": "",
"linesClass": "",
"functionsCoverage": "",
"functionsClass": "",
"branchesCoverage": "",
"branchesClass": "",
"isDirectory": true,
"link": null,
"children": [
{
"name": "regex",
"coverage": "",
"coverageClass": "coverage-unknown",
"linesTotal": "",
"linesExec": "",
"linesCoverage": "",
"linesClass": "",
"functionsCoverage": "",
"functionsClass": "",
"branchesCoverage": "",
"branchesClass": "",
"isDirectory": true,
"link": null,
"children": [
{
"name": "v5",
"coverage": "",
"coverageClass": "coverage-unknown",
"linesTotal": "",
"linesExec": "",
"linesCoverage": "",
"linesClass": "",
"functionsCoverage": "",
"functionsClass": "",
"branchesCoverage": "",
"branchesClass": "",
"isDirectory": true,
"link": null,
"children": [
{
"name": "basic_regex.hpp",
"coverage": "97.6",
"coverageClass": "coverage-high",
"linesTotal": "205",
"linesExec": "200",
"linesCoverage": "97.6",
"linesClass": "coverage-high",
"functionsCoverage": "96.9",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.basic_regex.hpp.fc7ae442ee1c3ba72f0c8efe27e0d4a0.html",
"children": []
},
{
"name": "basic_regex_creator.hpp",
"coverage": "98.4",
"coverageClass": "coverage-high",
"linesTotal": "806",
"linesExec": "793",
"linesCoverage": "98.4",
"linesClass": "coverage-high",
"functionsCoverage": "89.2",
"functionsClass": "coverage-medium",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.basic_regex_creator.hpp.ddc38b9ace9f1fce2474b7a8aa072758.html",
"children": []
},
{
"name": "basic_regex_parser.hpp",
"coverage": "88.1",
"coverageClass": "coverage-medium",
"linesTotal": "1796",
"linesExec": "1582",
"linesCoverage": "88.1",
"linesClass": "coverage-medium",
"functionsCoverage": "83.7",
"functionsClass": "coverage-medium",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.basic_regex_parser.hpp.3d312756fa15eb91f18ce74346527498.html",
"children": []
},
{
"name": "c_regex_traits.hpp",
"coverage": "80.2",
"coverageClass": "coverage-medium",
"linesTotal": "167",
"linesExec": "134",
"linesCoverage": "80.2",
"linesClass": "coverage-medium",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.c_regex_traits.hpp.4a312148ed0fde78796e7f563ab76c8c.html",
"children": []
},
{
"name": "cpp_regex_traits.hpp",
"coverage": "61.7",
"coverageClass": "coverage-low",
"linesTotal": "342",
"linesExec": "211",
"linesCoverage": "61.7",
"linesClass": "coverage-low",
"functionsCoverage": "88.9",
"functionsClass": "coverage-medium",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.cpp_regex_traits.hpp.065ad3525ef9ac006d863057e1e02b79.html",
"children": []
},
{
"name": "icu.hpp",
"coverage": "83.6",
"coverageClass": "coverage-medium",
"linesTotal": "371",
"linesExec": "310",
"linesCoverage": "83.6",
"linesClass": "coverage-medium",
"functionsCoverage": "50.5",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.icu.hpp.85a0eeb0fabef296bfc4997ff2ba1c10.html",
"children": []
},
{
"name": "match_flags.hpp",
"coverage": "100.0",
"coverageClass": "coverage-high",
"linesTotal": "10",
"linesExec": "10",
"linesCoverage": "100.0",
"linesClass": "coverage-high",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.match_flags.hpp.1af065f3f48dd91d0fe78746fcc481f7.html",
"children": []
},
{
"name": "match_results.hpp",
"coverage": "88.9",
"coverageClass": "coverage-medium",
"linesTotal": "307",
"linesExec": "273",
"linesCoverage": "88.9",
"linesClass": "coverage-medium",
"functionsCoverage": "61.1",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.match_results.hpp.6f836c49889c34cb37b399542baf9aad.html",
"children": []
},
{
"name": "mem_block_cache.hpp",
"coverage": "100.0",
"coverageClass": "coverage-high",
"linesTotal": "29",
"linesExec": "29",
"linesCoverage": "100.0",
"linesClass": "coverage-high",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.mem_block_cache.hpp.774760178b61a39a431f88e157dbeb00.html",
"children": []
},
{
"name": "object_cache.hpp",
"coverage": "95.5",
"coverageClass": "coverage-high",
"linesTotal": "44",
"linesExec": "42",
"linesCoverage": "95.5",
"linesClass": "coverage-high",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.object_cache.hpp.4205d672d499c4d505efbd5c4c18a6d7.html",
"children": []
},
{
"name": "pattern_except.hpp",
"coverage": "85.0",
"coverageClass": "coverage-medium",
"linesTotal": "20",
"linesExec": "17",
"linesCoverage": "85.0",
"linesClass": "coverage-medium",
"functionsCoverage": "42.9",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.pattern_except.hpp.b02995306146a84a816c726ffb2330d1.html",
"children": []
},
{
"name": "perl_matcher.hpp",
"coverage": "97.8",
"coverageClass": "coverage-high",
"linesTotal": "137",
"linesExec": "134",
"linesCoverage": "97.8",
"linesClass": "coverage-high",
"functionsCoverage": "62.1",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.perl_matcher.hpp.06d9b87b6156807b3cf2c759c3470f4c.html",
"children": []
},
{
"name": "perl_matcher_common.hpp",
"coverage": "95.9",
"coverageClass": "coverage-high",
"linesTotal": "416",
"linesExec": "399",
"linesCoverage": "95.9",
"linesClass": "coverage-high",
"functionsCoverage": "45.2",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.perl_matcher_common.hpp.a80be6e3c2e730ca65c745979c0f2c25.html",
"children": []
},
{
"name": "perl_matcher_non_recursive.hpp",
"coverage": "95.9",
"coverageClass": "coverage-high",
"linesTotal": "910",
"linesExec": "873",
"linesCoverage": "95.9",
"linesClass": "coverage-high",
"functionsCoverage": "48.7",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.perl_matcher_non_recursive.hpp.dab741f714b85b31fb79aec3a5169121.html",
"children": []
},
{
"name": "primary_transform.hpp",
"coverage": "54.8",
"coverageClass": "coverage-low",
"linesTotal": "31",
"linesExec": "17",
"linesCoverage": "54.8",
"linesClass": "coverage-low",
"functionsCoverage": "75.0",
"functionsClass": "coverage-medium",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.primary_transform.hpp.f5a3fa617cbe44ea611e82cf685be5de.html",
"children": []
},
{
"name": "regex_format.hpp",
"coverage": "96.0",
"coverageClass": "coverage-high",
"linesTotal": "420",
"linesExec": "403",
"linesCoverage": "96.0",
"linesClass": "coverage-high",
"functionsCoverage": "42.8",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_format.hpp.cbfb4d559693198023d36b54c0718da8.html",
"children": []
},
{
"name": "regex_grep.hpp",
"coverage": "88.5",
"coverageClass": "coverage-medium",
"linesTotal": "26",
"linesExec": "23",
"linesCoverage": "88.5",
"linesClass": "coverage-medium",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_grep.hpp.136157ec6043ed61e9e3c53cbca56207.html",
"children": []
},
{
"name": "regex_iterator.hpp",
"coverage": "100.0",
"coverageClass": "coverage-high",
"linesTotal": "48",
"linesExec": "48",
"linesCoverage": "100.0",
"linesClass": "coverage-high",
"functionsCoverage": "62.8",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_iterator.hpp.ec4c2b3efdca8342ebcbd87d33ac2551.html",
"children": []
},
{
"name": "regex_match.hpp",
"coverage": "100.0",
"coverageClass": "coverage-high",
"linesTotal": "20",
"linesExec": "20",
"linesCoverage": "100.0",
"linesClass": "coverage-high",
"functionsCoverage": "71.4",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_match.hpp.52d49d2882a598bc100172b30fdc9d28.html",
"children": []
},
{
"name": "regex_merge.hpp",
"coverage": "100.0",
"coverageClass": "coverage-high",
"linesTotal": "2",
"linesExec": "2",
"linesCoverage": "100.0",
"linesClass": "coverage-high",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_merge.hpp.33d760b7953f0b4898c72299d831fc8c.html",
"children": []
},
{
"name": "regex_raw_buffer.hpp",
"coverage": "100.0",
"coverageClass": "coverage-high",
"linesTotal": "45",
"linesExec": "45",
"linesCoverage": "100.0",
"linesClass": "coverage-high",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_raw_buffer.hpp.77701f68cbde88eced9e7f01d308832b.html",
"children": []
},
{
"name": "regex_replace.hpp",
"coverage": "96.0",
"coverageClass": "coverage-high",
"linesTotal": "25",
"linesExec": "24",
"linesCoverage": "96.0",
"linesClass": "coverage-high",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_replace.hpp.c4b3d6cdac5c516e993e1b9cc67f4537.html",
"children": []
},
{
"name": "regex_search.hpp",
"coverage": "91.3",
"coverageClass": "coverage-high",
"linesTotal": "23",
"linesExec": "21",
"linesCoverage": "91.3",
"linesClass": "coverage-high",
"functionsCoverage": "76.9",
"functionsClass": "coverage-medium",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_search.hpp.f27bcdbf1ed1b869adf859f2f255321f.html",
"children": []
},
{
"name": "regex_split.hpp",
"coverage": "97.4",
"coverageClass": "coverage-high",
"linesTotal": "38",
"linesExec": "37",
"linesCoverage": "97.4",
"linesClass": "coverage-high",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_split.hpp.79301dd57396b64d102f9beeef6f66e1.html",
"children": []
},
{
"name": "regex_token_iterator.hpp",
"coverage": "98.0",
"coverageClass": "coverage-high",
"linesTotal": "98",
"linesExec": "96",
"linesCoverage": "98.0",
"linesClass": "coverage-high",
"functionsCoverage": "98.9",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_token_iterator.hpp.a853c95168815fb1dc822438deee2041.html",
"children": []
},
{
"name": "regex_traits.hpp",
"coverage": "100.0",
"coverageClass": "coverage-high",
"linesTotal": "18",
"linesExec": "18",
"linesCoverage": "100.0",
"linesClass": "coverage-high",
"functionsCoverage": "96.9",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_traits.hpp.d789ddd33a94513158258f47f9458fa9.html",
"children": []
},
{
"name": "regex_traits_defaults.hpp",
"coverage": "96.5",
"coverageClass": "coverage-high",
"linesTotal": "86",
"linesExec": "83",
"linesCoverage": "96.5",
"linesClass": "coverage-high",
"functionsCoverage": "90.5",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_traits_defaults.hpp.0e98adc4b3e9dddef47398f3d8191f7e.html",
"children": []
},
{
"name": "regex_workaround.hpp",
"coverage": "83.3",
"coverageClass": "coverage-medium",
"linesTotal": "6",
"linesExec": "5",
"linesCoverage": "83.3",
"linesClass": "coverage-medium",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.regex_workaround.hpp.4f4c12e5cddef399d459e91c0f0af974.html",
"children": []
},
{
"name": "sub_match.hpp",
"coverage": "97.6",
"coverageClass": "coverage-high",
"linesTotal": "166",
"linesExec": "162",
"linesCoverage": "97.6",
"linesClass": "coverage-high",
"functionsCoverage": "72.5",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.sub_match.hpp.8759274a22f6d7afc27afd16b4ac0c35.html",
"children": []
},
{
"name": "u32regex_iterator.hpp",
"coverage": "89.1",
"coverageClass": "coverage-medium",
"linesTotal": "55",
"linesExec": "49",
"linesCoverage": "89.1",
"linesClass": "coverage-medium",
"functionsCoverage": "30.0",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.u32regex_iterator.hpp.cad511ff9f518ed5712544f4e2df17c3.html",
"children": []
},
{
"name": "u32regex_token_iterator.hpp",
"coverage": "38.1",
"coverageClass": "coverage-low",
"linesTotal": "113",
"linesExec": "43",
"linesCoverage": "38.1",
"linesClass": "coverage-low",
"functionsCoverage": "12.4",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.u32regex_token_iterator.hpp.b0c5226fc9ad02ba0b06216e9824edae.html",
"children": []
},
{
"name": "unicode_iterator.hpp",
"coverage": "87.8",
"coverageClass": "coverage-medium",
"linesTotal": "328",
"linesExec": "288",
"linesCoverage": "87.8",
"linesClass": "coverage-medium",
"functionsCoverage": "65.3",
"functionsClass": "coverage-low",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.unicode_iterator.hpp.6391a069c7ef3c1dd9a38df9254be88f.html",
"children": []
}
]
}
]
}
]
}
]
},
{
"name": "src",
"coverage": "73.4",
"coverageClass": "coverage-low",
"linesTotal": "222",
"linesExec": "163",
"linesCoverage": "73.4",
"linesClass": "coverage-low",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": true,
"link": "index.src.25d902c24283ab8cfbac54dfa101ad31.html",
"children": [
{
"name": "posix_api.cpp",
"coverage": "72.6",
"coverageClass": "coverage-low",
"linesTotal": "113",
"linesExec": "82",
"linesCoverage": "72.6",
"linesClass": "coverage-low",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.posix_api.cpp.cfc7145cfaa87ceb158ee21e8fa5193a.html",
"children": []
},
{
"name": "wide_posix_api.cpp",
"coverage": "74.3",
"coverageClass": "coverage-low",
"linesTotal": "109",
"linesExec": "81",
"linesCoverage": "74.3",
"linesClass": "coverage-low",
"functionsCoverage": "100.0",
"functionsClass": "coverage-high",
"branchesCoverage": "-",
"branchesClass": "coverage-unknown",
"isDirectory": false,
"link": "index.wide_posix_api.cpp.5d708c8c14b8fa1710211bdab41e2b13.html",
"children": []
}
]
}
]
+8
View File
@@ -0,0 +1,8 @@
<html>
<head>
<meta http-equiv="refresh" content="0; url=./gcovr/index.html">
</head>
<body>
</body>
</html>
-58
View File
@@ -1,58 +0,0 @@
# Copyright John Maddock 2005. 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)
using quickbook ;
path-constant boost-images : ../../../doc/src/images ;
xml regex : regex.qbk ;
boostbook standalone
:
regex
:
# HTML options first:
# Use graphics not text for navigation:
<xsl:param>navig.graphics=1
# How far down we chunk nested sections, basically all of them:
<xsl:param>chunk.section.depth=10
# Don't put the first section on the same page as the TOC:
<xsl:param>chunk.first.sections=1
# How far down sections get TOC's
<xsl:param>toc.section.depth=10
# Max depth in each TOC:
<xsl:param>toc.max.depth=4
# How far down we go with TOC's
<xsl:param>generate.section.toc.level=10
# Path for links to Boost:
<xsl:param>boost.root=../../../..
# PDF Options:
# TOC Generation: this is needed for FOP-0.9 and later:
<xsl:param>fop1.extensions=0
# Or enable this if you're using XEP:
<xsl:param>xep.extensions=1
# TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
<xsl:param>fop.extensions=0
# No indent on body text:
<xsl:param>body.start.indent=0pt
# Margin size:
<xsl:param>page.margin.inner=0.5in
# Margin size:
<xsl:param>page.margin.outer=0.5in
# Yes, we want graphics for admonishments:
<xsl:param>admon.graphics=1
# Set this one for PDF generation *only*:
# default pnd graphics are awful in PDF form,
# better use SVG's instead:
<format>pdf:<xsl:param>admon.graphics.extension=".svg"
<format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/regex/doc/html
;
###############################################################################
alias boostdoc ;
explicit boostdoc ;
alias boostrelease : standalone ;
explicit boostrelease ;
-49
View File
@@ -1,49 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:acknowledgements Acknowledgements]
The author can be contacted at john - at - johnmaddock.co.uk; the home page for this
library is at [@http://www.boost.org www.boost.org].
I am indebted to [@http://www.cs.princeton.edu/~rs/
Robert Sedgewick's "Algorithms in C++"] for forcing me to think
about algorithms and their performance, and to the folks at boost for forcing me
to think, period.
[@http://www.boost-consulting.com/ Eric Niebler], author of Boost.Expressive and
the [@http://research.microsoft.com/projects/greta GRETA regular expression component],
has shared several important ideas, in a series of long discussions.
Pete Becker, of [@http://www.versatilecoding.com Roundhouse Consulting, Ltd.],
has helped enormously with the standardisation
proposal language.
The following people have all contributed useful comments or fixes: Dave Abrahams,
Mike Allison, Edan Ayal, Jayashree Balasubramanian, Jan B'''&#xF6;'''lsche, Beman Dawes,
Paul Baxter, David Bergman, David Dennerline, Edward Diener, Peter Dimov,
Robert Dunn, Fabio Forno, Tobias Gabrielsson, Rob Gillen, Marc Gregoire, Chris Hecker,
Nick Hodapp, Jesse Jones, Martin Jost, Boris Krasnovskiy, Jan Hermelink, Max Leung,
Wei-hao Lin, Jens Maurer, Richard Peters, Heiko Schmidt, Jason Shirk, Gerald Slacik,
Scobie Smith, Mike Smyth, Alexander Sokolovsky, Herv'''&#xE9;''' Poirier, Michael Raykh,
Marc Recht, Scott VanCamp, Bruno Voigt, Alexey Voinov, Jerry Waldorf, Rob Ward,
Lealon Watts, John Wismar, Thomas Witt and Yuval Yosef.
If I've missed your name off (I'm sure there are a few, just not who they are...) then
please do get in touch.
I am also grateful to the manuals supplied with the Henry Spencer, PCRE, Perl
and GNU regular expression libraries - wherever possible I have tried to
maintain compatibility with these libraries and with the POSIX standard -
the code however is entirely my own, including any bugs! I can absolutely guarantee
that I will not fix any bugs I don't know about, so if you have any comments or
spot any bugs, please get in touch.
[endsect]
-58
View File
@@ -1,58 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:bad_expression bad_expression]
[h4 Synopsis]
#include <boost/pattern_except.hpp>
The class `regex_error` defines the type of objects thrown as exceptions to
report errors during the conversion from a string representing a regular
expression to a finite state machine.
namespace boost{
class regex_error : public std::runtime_error
{
public:
explicit regex_error(const std::string& s, regex_constants::error_type err, std::ptrdiff_t pos);
explicit regex_error(boost::regex_constants::error_type err);
boost::regex_constants::error_type code()const;
std::ptrdiff_t position()const;
};
typedef regex_error bad_pattern; // for backwards compatibility
typedef regex_error bad_expression; // for backwards compatibility
} // namespace boost
[h4 Description]
regex_error(const std::string& s, regex_constants::error_type err, std::ptrdiff_t pos);
regex_error(boost::regex_constants::error_type err);
[*Effects:] Constructs an object of class regex_error.
boost::regex_constants::error_type code()const;
[*Effects:] returns the error code that represents parsing error that occurred.
std::ptrdiff_t position()const;
[*Effects:] returns the location in the expression where parsing stopped.
Footnotes: the choice of `std::runtime_error` as the base class for `regex_error`
is moot; depending upon how the library is used exceptions may be either
logic errors (programmer supplied expressions) or run time errors
(user supplied expressions). The library previously used `bad_pattern`
and `bad_expression` for errors, these have been replaced by the single
class `regex_error` to keep the library in synchronization with the
[tr1].
[endsect]
-680
View File
@@ -1,680 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:basic_regex basic_regex]
[h4 Synopsis]
#include <boost/regex.hpp>
The template class `basic_regex` encapsulates regular expression
parsing and compilation. The class takes two template parameters:
* `charT`: determines the character type, i.e. either `char` or `wchar_t`;
see [link boost_regex.ref.concepts.charT_concept charT concept].
* `traits`: determines the behavior of the character type, for example which
character class names are recognized. A default traits class is provided:
`regex_traits<charT>`. See also
[link boost_regex.ref.concepts.traits_concept traits concept].
For ease of use there are two typedefs that define the two standard
`basic_regex` instances, unless you want to use custom traits classes or
non-standard character types (for example see
[link boost_regex.ref.non_std_strings.icu unicode support]),
you won't need to use anything other than these:
namespace boost{
template <class charT, class traits = regex_traits<charT> >
class basic_regex;
typedef basic_regex<char> regex;
typedef basic_regex<wchar_t> wregex;
}
The definition of `basic_regex` follows: it is based very closely on class
`basic_string`, and fulfils the requirements for a constant-container of `charT`.
namespace boost{
template <class charT, class traits = regex_traits<charT> >
class basic_regex {
public:
// types:
typedef charT value_type;
typedef implementation-specific const_iterator;
typedef const_iterator iterator;
typedef charT& reference;
typedef const charT& const_reference;
typedef std::ptrdiff_t difference_type;
typedef std::size_t size_type;
typedef regex_constants::``[syntax_option_type]`` flag_type;
typedef typename traits::locale_type locale_type;
// constants:
// main option selection:
static const regex_constants::``[syntax_option_type]`` normal
= regex_constants::normal;
static const regex_constants::``[syntax_option_type]`` ECMAScript
= normal;
static const regex_constants::``[syntax_option_type]`` JavaScript
= normal;
static const regex_constants::``[syntax_option_type]`` JScript
= normal;
static const regex_constants::``[syntax_option_type]`` basic
= regex_constants::basic;
static const regex_constants::``[syntax_option_type]`` extended
= regex_constants::extended;
static const regex_constants::``[syntax_option_type]`` awk
= regex_constants::awk;
static const regex_constants::``[syntax_option_type]`` grep
= regex_constants::grep;
static const regex_constants::``[syntax_option_type]`` egrep
= regex_constants::egrep;
static const regex_constants::``[syntax_option_type]`` sed
= basic = regex_constants::sed;
static const regex_constants::``[syntax_option_type]`` perl
= regex_constants::perl;
static const regex_constants::``[syntax_option_type]`` literal
= regex_constants::literal;
// modifiers specific to perl expressions:
static const regex_constants::``[syntax_option_type]`` no_mod_m
= regex_constants::no_mod_m;
static const regex_constants::``[syntax_option_type]`` no_mod_s
= regex_constants::no_mod_s;
static const regex_constants::``[syntax_option_type]`` mod_s
= regex_constants::mod_s;
static const regex_constants::``[syntax_option_type]`` mod_x
= regex_constants::mod_x;
// modifiers specific to POSIX basic expressions:
static const regex_constants::``[syntax_option_type]`` bk_plus_qm
= regex_constants::bk_plus_qm;
static const regex_constants::``[syntax_option_type]`` bk_vbar
= regex_constants::bk_vbar
static const regex_constants::``[syntax_option_type]`` no_char_classes
= regex_constants::no_char_classes
static const regex_constants::``[syntax_option_type]`` no_intervals
= regex_constants::no_intervals
// common modifiers:
static const regex_constants::``[syntax_option_type]`` nosubs
= regex_constants::nosubs;
static const regex_constants::``[syntax_option_type]`` optimize
= regex_constants::optimize;
static const regex_constants::``[syntax_option_type]`` collate
= regex_constants::collate;
static const regex_constants::``[syntax_option_type]`` newline_alt
= regex_constants::newline_alt;
static const regex_constants::``[syntax_option_type]`` no_except
= regex_constants::newline_alt;
// construct/copy/destroy:
explicit ``[link boost_regex.basic_regex.construct1 basic_regex]`` ();
explicit ``[link boost_regex.basic_regex.construct2 basic_regex]``(const charT* p, flag_type f = regex_constants::normal);
``[link boost_regex.basic_regex.construct3 basic_regex]``(const charT* p1, const charT* p2,
flag_type f = regex_constants::normal);
``[link boost_regex.basic_regex.construct4 basic_regex]``(const charT* p, size_type len, flag_type f);
``[link boost_regex.basic_regex.construct5 basic_regex]``(const basic_regex&);
template <class ST, class SA>
explicit ``[link boost_regex.basic_regex.construct6 basic_regex]``(const basic_string<charT, ST, SA>& p,
flag_type f = regex_constants::normal);
template <class InputIterator>
``[link boost_regex.basic_regex.construct7 basic_regex]``(InputIterator first, InputIterator last,
flag_type f = regex_constants::normal);
~basic_regex();
``[link boost_regex.basic_regex.opeq1 basic_regex& operator=]``(const basic_regex&);
``[link boost_regex.basic_regex.opeq2 basic_regex& operator=]`` (const charT* ptr);
template <class ST, class SA>
``[link boost_regex.basic_regex.opeq3 basic_regex& operator=]`` (const basic_string<charT, ST, SA>& p);
// iterators:
``[link boost_regex.basic_regex.subexpression std::pair<const_iterator, const_iterator> subexpression]``(size_type n) const;
``[link boost_regex.basic_regex.begin const_iterator begin]``() const;
``[link boost_regex.basic_regex.end const_iterator end]``() const;
// capacity:
``[link boost_regex.basic_regex.size size_type size]``() const;
``[link boost_regex.basic_regex.max_size size_type max_size]``() const;
``[link boost_regex.basic_regex.empty bool empty]``() const;
``[link boost_regex.basic_regex.mark_count size_type mark_count]``()const;
//
// modifiers:
``[link boost_regex.basic_regex.assign1 basic_regex& assign]``(const basic_regex& that);
``[link boost_regex.basic_regex.assign2 basic_regex& assign]``(const charT* ptr,
flag_type f = regex_constants::normal);
``[link boost_regex.basic_regex.assign3 basic_regex& assign]``(const charT* ptr, unsigned int len, flag_type f);
template <class string_traits, class A>
``[link boost_regex.basic_regex.assign4 basic_regex& assign]``(const basic_string<charT, string_traits, A>& s,
flag_type f = regex_constants::normal);
template <class InputIterator>
``[link boost_regex.basic_regex.assign5 basic_regex& assign]``(InputIterator first, InputIterator last,
flag_type f = regex_constants::normal);
// const operations:
``[link boost_regex.basic_regex.flags flag_type flags]``() const;
``[link boost_regex.basic_regex.status int status]``()const;
``[link boost_regex.basic_regex.str basic_string<charT> str]``() const;
``[link boost_regex.basic_regex.compare int compare]``(basic_regex&) const;
// locale:
``[link boost_regex.basic_regex.imbue locale_type imbue]``(locale_type loc);
``[link boost_regex.basic_regex.getloc locale_type getloc]``() const;
// swap
``[link boost_regex.basic_regex.swap void swap]``(basic_regex&) throw();
};
template <class charT, class traits>
``[link boost_regex.basic_regex.op_eq bool operator ==]`` (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
template <class charT, class traits>
``[link boost_regex.basic_regex.op_ne bool operator !=]`` (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
template <class charT, class traits>
``[link boost_regex.basic_regex.op_lt bool operator <]`` (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
template <class charT, class traits>
``[link boost_regex.basic_regex.op_le bool operator <=]`` (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
template <class charT, class traits>
``[link boost_regex.basic_regex.op_ge bool operator >=]`` (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
template <class charT, class traits>
``[link boost_regex.basic_regex.op_gt bool operator >]`` (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
template <class charT, class io_traits, class re_traits>
basic_ostream<charT, io_traits>&
``[link boost_regex.basic_regex.op_stream operator <<]`` (basic_ostream<charT, io_traits>& os,
const basic_regex<charT, re_traits>& e);
template <class charT, class traits>
``[link boost_regex.basic_regex.op_swap void swap]``(basic_regex<charT, traits>& e1,
basic_regex<charT, traits>& e2);
typedef basic_regex<char> regex;
typedef basic_regex<wchar_t> wregex;
} // namespace boost
[h4 Description]
Class `basic_regex` has the following public members:
// main option selection:
static const regex_constants::``[syntax_option_type]`` normal
= regex_constants::normal;
static const regex_constants::``[syntax_option_type]`` ECMAScript
= normal;
static const regex_constants::``[syntax_option_type]`` JavaScript
= normal;
static const regex_constants::``[syntax_option_type]`` JScript
= normal;
static const regex_constants::``[syntax_option_type]`` basic
= regex_constants::basic;
static const regex_constants::``[syntax_option_type]`` extended
= regex_constants::extended;
static const regex_constants::``[syntax_option_type]`` awk
= regex_constants::awk;
static const regex_constants::``[syntax_option_type]`` grep
= regex_constants::grep;
static const regex_constants::``[syntax_option_type]`` egrep
= regex_constants::egrep;
static const regex_constants::``[syntax_option_type]`` sed
= regex_constants::sed;
static const regex_constants::``[syntax_option_type]`` perl
= regex_constants::perl;
static const regex_constants::``[syntax_option_type]`` literal
= regex_constants::literal;
// modifiers specific to perl expressions:
static const regex_constants::``[syntax_option_type]`` no_mod_m
= regex_constants::no_mod_m;
static const regex_constants::``[syntax_option_type]`` no_mod_s
= regex_constants::no_mod_s;
static const regex_constants::``[syntax_option_type]`` mod_s
= regex_constants::mod_s;
static const regex_constants::``[syntax_option_type]`` mod_x
= regex_constants::mod_x;
// modifiers specific to POSIX basic expressions:
static const regex_constants::``[syntax_option_type]`` bk_plus_qm
= regex_constants::bk_plus_qm;
static const regex_constants::``[syntax_option_type]`` bk_vbar
= regex_constants::bk_vbar
static const regex_constants::``[syntax_option_type]`` no_char_classes
= regex_constants::no_char_classes
static const regex_constants::``[syntax_option_type]`` no_intervals
= regex_constants::no_intervals
// common modifiers:
static const regex_constants::``[syntax_option_type]`` nosubs
= regex_constants::nosubs;
static const regex_constants::``[syntax_option_type]`` optimize
= regex_constants::optimize;
static const regex_constants::``[syntax_option_type]`` collate
= regex_constants::collate;
static const regex_constants::``[syntax_option_type]`` newline_alt
= regex_constants::newline_alt;
The meaning of these options is documented in the [syntax_option_type]
section.
The static constant members are provided as synonyms for the constants declared
in namespace `boost::regex_constants`; for each constant of type [syntax_option_type]
declared in namespace `boost::regex_constants` then a constant with the same name,
type and value is declared within the scope of basic_regex.
[#boost_regex.basic_regex.construct1]
basic_regex();
[*Effects]: Constructs an object of class `basic_regex`.
[table basic_regex default construction postconditions
[[Element][Value]]
[[`empty()`][`true`]]
[[`size()`][`0`]]
[[`str()`][`basic_string<charT>()`]]
]
[#boost_regex.basic_regex.construct2]
basic_regex(const charT* p, flag_type f = regex_constants::normal);
[*Requires]: /p/ shall not be a null pointer.
[*Throws]: [bad_expression] if /p/ is not a valid regular expression,
unless the flag `no_except` is set in /f/.
[*Effects]: Constructs an object of class [basic_regex]; the object's internal
finite state machine is constructed from the regular expression contained
in the null-terminated string /p/, and interpreted according to the
[link boost_regex.ref.syntax_option_type option
flags] specified in /f/.
[table Postconditions for basic_regex construction
[[Element][Value]]
[[`empty()`][`false`]]
[[`size()`][`char_traits<charT>::length(p)`]]
[[`str()`][`basic_string<charT>(p)`]]
[[`flags()`][['f]]]
[[`mark_count()`][The number of marked sub-expressions within the expression.]]
]
[#boost_regex.basic_regex.construct3]
basic_regex(const charT* p1, const charT* p2,
flag_type f = regex_constants::normal);
[*Requires]: /p1/ and /p2/ are not null pointers, `p1 < p2`.
[*Throws]: bad_expression if \[p1,p2) is not a valid regular expression, unless
the flag `no_except` is set in /f/.
[*Effects]: Constructs an object of class [basic_regex]; the object's
internal finite state machine is constructed from the regular expression
contained in the sequence of characters \[p1,p2), and interpreted according the
[link boost_regex.ref.syntax_option_type option flags] specified in /f/.
[table Postconditions for basic_regex construction
[[Element][Value]]
[[`empty()`][`false`]]
[[`size()`][`std::distance(p1,p2)`]]
[[`str()`][`basic_string<charT>(p1,p2)`]]
[[`flags()`][['f]]]
[[`mark_count()`][The number of marked sub-expressions within the expression.]]
]
[#boost_regex.basic_regex.construct4]
basic_regex(const charT* p, size_type len, flag_type f);
[*Requires]: /p/ shall not be a null pointer, `len < max_size()`.
[*Throws]: [bad_expression] if /p/ is not a valid regular expression, unless
the flag `no_except` is set in /f/.
[*Effects]: Constructs an object of class [basic_regex]; the object's
internal finite state machine is constructed from the regular expression
contained in the sequence of characters \[p, p+len), and interpreted
according the option flags specified in /f/.
[table Postconditions for basic_regex construction
[[Element][Value]]
[[`empty()`][`false`]]
[[`size()`][['len]]]
[[`str()`][`basic_string<charT>(p, len)`]]
[[`flags()`][['f]]]
[[`mark_count()`][The number of marked sub-expressions within the expression.]]
]
[#boost_regex.basic_regex.construct5]
basic_regex(const basic_regex& e);
[*Effects]: Constructs an object of class [basic_regex] as a copy of the object
/e/.
[#boost_regex.basic_regex.construct6]
template <class ST, class SA>
basic_regex(const basic_string<charT, ST, SA>& s,
flag_type f = regex_constants::normal);
[*Throws]: [bad_expression] if /s/ is not a valid regular expression,
unless the flag `no_except` is set in /f/.
[*Effects]: Constructs an object of class [basic_regex]; the object's
internal finite state machine is constructed from the regular expression
contained in the string /s/, and interpreted according to the [link boost_regex.ref.syntax_option_type option
flags] specified in /f/.
[table Postconditions for basic_regex construction
[[Element][Value]]
[[`empty()`][`false`]]
[[`size()`][`s.size()`]]
[[`str()`][['s]]]
[[`flags()`][['f]]]
[[`mark_count()`][The number of marked sub-expressions within the expression.]]
]
[#boost_regex.basic_regex.construct7]
template <class ForwardIterator>
basic_regex(ForwardIterator first, ForwardIterator last,
flag_type f = regex_constants::normal);
[*Throws]: [bad_expression] if the sequence \[first, last) is not a valid
regular expression, unless the flag `no_except` is set in /f/.
[*Effects]: Constructs an object of class [basic_regex]; the object's
internal finite state machine is constructed from the regular expression
contained in the sequence of characters \[first, last), and interpreted
according to the [link boost_regex.ref.syntax_option_type option flags] specified in /f/.
[table Postconditions for basic_regex construction
[[Element][Value]]
[[`empty()`][`false`]]
[[`size()`][`distance(first,last)`]]
[[`str()`][`basic_string<charT>(first,last)`]]
[[`flags()`][['f]]]
[[`mark_count()`][The number of marked sub-expressions within the expression.]]
]
[#boost_regex.basic_regex.opeq1]
basic_regex& operator=(const basic_regex& e);
[*Effects]: Returns the result of `assign(e.str(), e.flags())`.
[#boost_regex.basic_regex.opeq2]
basic_regex& operator=(const charT* ptr);
[*Requires]: /p/ shall not be a null pointer.
[*Effects]: Returns the result of `assign(ptr)`.
[#boost_regex.basic_regex.opeq3]
template <class ST, class SA>
basic_regex& operator=(const basic_string<charT, ST, SA>& p);
[*Effects]: Returns the result of `assign(p)`.
[#boost_regex.basic_regex.subexpression]
std::pair<const_iterator, const_iterator> subexpression(size_type n) const;
[*Effects]: Returns a pair of iterators denoting the location of
marked subexpression /n/ within the original regular expression string.
The returned iterators are relative to `begin()` and `end()`.
[*Requires]: The expression must have been compiled with the
[syntax_option_type] save_subexpression_location set. Argument
/n/ must be in within the range `0 <= n < mark_count()`.
[#boost_regex.basic_regex.begin]
const_iterator begin() const;
[*Effects]: Returns a starting iterator to a sequence of characters representing
the regular expression.
[#boost_regex.basic_regex.end]
const_iterator end() const;
[*Effects]: Returns termination iterator to a sequence of characters representing
the regular expression.
[#boost_regex.basic_regex.size]
size_type size() const;
[*Effects]: Returns the length of the sequence of characters representing the regular expression.
[#boost_regex.basic_regex.max_size]
size_type max_size() const;
[*Effects]: Returns the maximum length of the sequence of characters representing
the regular expression.
[#boost_regex.basic_regex.empty]
bool empty() const;
[*Effects]: Returns true if the object does not contain a valid regular expression,
otherwise false.
[#boost_regex.basic_regex.mark_count]
size_type mark_count() const;
[*Effects]: Returns the number of marked sub-expressions within the regular expression.
[#boost_regex.basic_regex.assign1]
basic_regex& assign(const basic_regex& that);
[*Effects]: Returns [link boost_regex.basic_regex.assign4 `assign(that.str(), that.flags())`].
[#boost_regex.basic_regex.assign2]
basic_regex& assign(const charT* ptr, flag_type f = regex_constants::normal);
[*Effects]: Returns [link boost_regex.basic_regex.assign4 `assign(string_type(ptr), f)`].
[#boost_regex.basic_regex.assign3]
basic_regex& assign(const charT* ptr, unsigned int len, flag_type f);
[*Effects]: Returns [link boost_regex.basic_regex.assign4 `assign(string_type(ptr, len), f)`].
[#boost_regex.basic_regex.assign4]
template <class string_traits, class A>
basic_regex& assign(const basic_string<charT, string_traits, A>& s,
flag_type f = regex_constants::normal);
[*Throws]: [bad_expression] if /s/ is not a valid regular expression,
unless the flag `no_except` is set in /f/.
[*Returns]: *this.
[*Effects]: Assigns the regular expression contained in the string /s/,
interpreted according the [link boost_regex.ref.syntax_option_type option flags]
specified in /f/.
[table Postconditions for basic_regex::assign
[[Element][Value]]
[[`empty()`][`false`]]
[[`size()`][`s.size()`]]
[[`str()`][['s]]]
[[`flags()`][['f]]]
[[`mark_count()`][The number of marked sub-expressions within the expression.]]
]
[#boost_regex.basic_regex.assign5]
template <class InputIterator>
basic_regex& assign(InputIterator first, InputIterator last,
flag_type f = regex_constants::normal);
[*Requires]: The type `InputIterator` corresponds to the
[@http://input_iterator Input Iterator requirements
(24.1.1)].
[*Effects]: Returns [link boost_regex.basic_regex.assign4 `assign(string_type(first, last), f)`].
[#boost_regex.basic_regex.flags]
flag_type flags() const;
[*Effects]: Returns a copy of the [link boost_regex.ref.syntax_option_type
regular expression syntax flags] that were passed to the object's constructor,
or the last call to `assign`.
[#boost_regex.basic_regex.status]
int status() const;
[*Effects]: Returns zero if the expression contains a valid regular expression,
otherwise an error code. This member function is retained for use in
environments that cannot use exception handling.
[#boost_regex.basic_regex.str]
basic_string<charT> str() const;
[*Effects]: Returns a copy of the character sequence passed to the object's constructor,
or the last call to assign.
[#boost_regex.basic_regex.compare]
int compare(basic_regex& e)const;
[*Effects]: If `flags() == e.flags()` then returns `str().compare(e.str())`,
otherwise returns `flags() - e.flags()`.
[#boost_regex.basic_regex.imbue]
locale_type imbue(locale_type l);
[*Effects]: Returns the result of `traits_inst.imbue(l)` where `traits_inst` is
a (default initialized) instance of the template parameter `traits` stored
within the object. Calls to `imbue` invalidate any currently contained
regular expression.
[*Postcondition]: `empty() == true`.
[#boost_regex.basic_regex.getloc]
locale_type getloc() const;
[*Effects]: Returns the result of `traits_inst.getloc()` where `traits_inst` is
a (default initialized) instance of the template parameter traits stored
within the object.
[#boost_regex.basic_regex.swap]
void swap(basic_regex& e) throw();
[*Effects]: Swaps the contents of the two regular expressions.
[*Postcondition]: `*this` contains the regular expression that was in /e/, /e/ contains
the regular expression that was in `*this`.
[*Complexity]: constant time.
[note Comparisons between [basic_regex] objects are provided on an
experimental basis: please note that these are not present in the [tr1],
so use with care if you are writing code that may need to be ported
to other implementations of [basic_regex].]
[#boost_regex.basic_regex.op_eq]
template <class charT, class traits>
bool operator == (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
[*Effects]: Returns `lhs.compare(rhs) == 0`.
[#boost_regex.basic_regex.op_ne]
template <class charT, class traits>
bool operator != (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
[*Effects]: Returns `lhs.compare(rhs) != 0`.
[#boost_regex.basic_regex.op_lt]
template <class charT, class traits>
bool operator < (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
[*Effects]: Returns `lhs.compare(rhs) < 0`.
[#boost_regex.basic_regex.op_le]
template <class charT, class traits>
bool operator <= (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
[*Effects]: Returns `lhs.compare(rhs) <= 0`.
[#boost_regex.basic_regex.op_ge]
template <class charT, class traits>
bool operator >= (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
[*Effects]: Returns `lhs.compare(rhs) >= 0`.
[#boost_regex.basic_regex.op_gt]
template <class charT, class traits>
bool operator > (const basic_regex<charT, traits>& lhs,
const basic_regex<charT, traits>& rhs);
[*Effects]: Returns `lhs.compare(rhs) > 0`.
[note The basic_regex stream inserter is provided on an experimental basis,
and outputs the textual representation of the expression to the stream.]
[#boost_regex.basic_regex.op_stream]
template <class charT, class io_traits, class re_traits>
basic_ostream<charT, io_traits>&
operator << (basic_ostream<charT, io_traits>& os
const basic_regex<charT, re_traits>& e);
[*Effects]: Returns `(os << e.str())`.
[#boost_regex.basic_regex.op_swap]
template <class charT, class traits>
void swap(basic_regex<charT, traits>& lhs,
basic_regex<charT, traits>& rhs);
[*Effects]: calls `lhs.swap(rhs)`.
[endsect]
-200
View File
@@ -1,200 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:captures Understanding Marked Sub-Expressions and Captures]
Captures are the iterator ranges that are "captured" by marked
sub-expressions as a regular expression gets matched. Each marked
sub-expression can result in more than one capture, if it is matched
more than once. This document explains how captures and marked
sub-expressions in Boost.Regex are represented and accessed.
[h4 Marked sub-expressions]
Every time a Perl regular expression contains a parenthesis group `()`, it
spits out an extra field, known as a marked sub-expression,
for example the expression:
[pre (\w+)\W+(\w+)]
Has two marked sub-expressions (known as $1 and $2 respectively), in
addition the complete match is known as $&, everything before the
first match as $\`, and everything after the match as $'. So
if the above expression is searched for within `"@abc def--"`, then we obtain:
[table
[[Sub-expression][Text found]]
[[$\`]["@"]]
[[$&]["abc def"]]
[[$1]["abc"]]
[[$2]["def"]]
[[$']["--"]]
]
In Boost.Regex all these are accessible via the [match_results] class that
gets filled in when calling one of the regular expression matching algorithms
([regex_search], [regex_match], or [regex_iterator]). So given:
boost::match_results<IteratorType> m;
The Perl and Boost.Regex equivalents are as follows:
[table
[[Perl][Boost.Regex]]
[[$\`][`m.prefix()`]]
[[$&][`m[0]`]]
[[$n][`m[n]`]]
[[$\'][`m.suffix()`]]
]
In Boost.Regex each sub-expression match is represented by a [sub_match] object,
this is basically just a pair of iterators denoting the start and end
position of the sub-expression match, but there are some additional
operators provided so that objects of type [sub_match] behave a lot like a
`std::basic_string`: for example they are implicitly convertible to a
`basic_string`, they can be compared to a string, added to a string, or
streamed out to an output stream.
[h4 Unmatched Sub-Expressions]
When a regular expression match is found there is no need for all of the
marked sub-expressions to have participated in the match, for example the expression:
[pre (abc)|(def)]
can match either $1 or $2, but never both at the same time. In Boost.Regex
you can determine which sub-expressions matched by accessing the
`sub_match::matched` data member.
[h4 Repeated Captures]
When a marked sub-expression is repeated, then the sub-expression gets
"captured" multiple times, however normally only the final capture is available,
for example if
[pre (?:(\w+)\W+)+]
is matched against
[pre one fine day]
Then $1 will contain the string "day", and all the previous captures will have
been forgotten.
However, Boost.Regex has an experimental feature that allows all the capture
information to be retained - this is accessed either via the
`match_results::captures` member function or the `sub_match::captures` member
function. These functions return a container that contains a sequence of all
the captures obtained during the regular expression matching. The following
example program shows how this information may be used:
#include <boost/regex.hpp>
#include <iostream>
void print_captures(const std::string& regx, const std::string& text)
{
boost::regex e(regx);
boost::smatch what;
std::cout << "Expression: \"" << regx << "\"\n";
std::cout << "Text: \"" << text << "\"\n";
if(boost::regex_match(text, what, e, boost::match_extra))
{
unsigned i, j;
std::cout << "** Match found **\n Sub-Expressions:\n";
for(i = 0; i < what.size(); ++i)
std::cout << " $" << i << " = \"" << what[i] << "\"\n";
std::cout << " Captures:\n";
for(i = 0; i < what.size(); ++i)
{
std::cout << " $" << i << " = {";
for(j = 0; j < what.captures(i).size(); ++j)
{
if(j)
std::cout << ", ";
else
std::cout << " ";
std::cout << "\"" << what.captures(i)[j] << "\"";
}
std::cout << " }\n";
}
}
else
{
std::cout << "** No Match found **\n";
}
}
int main(int , char* [])
{
print_captures("(([[:lower:]]+)|([[:upper:]]+))+", "aBBcccDDDDDeeeeeeee");
print_captures("(.*)bar|(.*)bah", "abcbar");
print_captures("(.*)bar|(.*)bah", "abcbah");
print_captures("^(?:(\\w+)|(?>\\W+))*$",
"now is the time for all good men to come to the aid of the party");
return 0;
}
Which produces the following output:
[pre
Expression: "((\[\[:lower:\]\]+)|(\[\[:upper:\]\]+))+"
Text: "aBBcccDDDDDeeeeeeee"
'''**''' Match found '''**'''
Sub-Expressions:
$0 = "aBBcccDDDDDeeeeeeee"
$1 = "eeeeeeee"
$2 = "eeeeeeee"
$3 = "DDDDD"
Captures:
$0 = { "aBBcccDDDDDeeeeeeee" }
$1 = { "a", "BB", "ccc", "DDDDD", "eeeeeeee" }
$2 = { "a", "ccc", "eeeeeeee" }
$3 = { "BB", "DDDDD" }
Expression: "(.'''*''')bar|(.'''*''')bah"
Text: "abcbar"
'''**''' Match found '''**'''
Sub-Expressions:
$0 = "abcbar"
$1 = "abc"
$2 = ""
Captures:
$0 = { "abcbar" }
$1 = { "abc" }
$2 = { }
Expression: "(.'''*''')bar|(.'''*''')bah"
Text: "abcbah"
'''**''' Match found '''**'''
Sub-Expressions:
$0 = "abcbah"
$1 = ""
$2 = "abc"
Captures:
$0 = { "abcbah" }
$1 = { }
$2 = { "abc" }
Expression: "^(?:(\w+)|(?>\W+))'''*$'''"
Text: "now is the time for all good men to come to the aid of the party"
'''**''' Match found '''**'''
Sub-Expressions:
$0 = "now is the time for all good men to come to the aid of the party"
$1 = "party"
Captures:
$0 = { "now is the time for all good men to come to the aid of the party" }
$1 = { "now", "is", "the", "time", "for", "all", "good", "men", "to",
"come", "to", "the", "aid", "of", "the", "party" }
]
Unfortunately enabling this feature has an impact on performance
(even if you don't use it), and a much bigger impact if you do use it,
therefore to use this feature you need to:
* Define BOOST_REGEX_MATCH_EXTRA for all translation units including the library source (the best way to do this is to uncomment this define in boost/regex/user.hpp and then rebuild everything.
* Pass the match_extra flag to the particular algorithms where you actually need the captures information (regex_search, regex_match, or regex_iterator).
[endsect]
-92
View File
@@ -1,92 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:character_classes Character Class Names]
[section:std_char_classes Character Classes that are Always Supported]
The following character class names are always supported by Boost.Regex:
[table
[[Name] [POSIX-standard name] [Description]]
[[alnum] [Yes] [Any alpha-numeric character.]]
[[alpha] [Yes] [Any alphabetic character.]]
[[blank] [Yes] [Any whitespace character that is not a line separator.]]
[[cntrl] [Yes] [Any control character.]]
[[d] [No] [Any decimal digit]]
[[digit] [Yes] [Any decimal digit.]]
[[graph] [Yes] [Any graphical character.]]
[[l] [No] [Any lower case character.]]
[[lower] [Yes] [Any lower case character.]]
[[print] [Yes] [Any printable character.]]
[[punct] [Yes] [Any punctuation character.]]
[[s] [No] [Any whitespace character.]]
[[space] [Yes] [Any whitespace character.]]
[[unicode] [No] [Any extended character whose code point is above 255 in value.]]
[[u] [No] [Any upper case character.]]
[[upper] [Yes] [Any upper case character.]]
[[w] [No] [Any word character (alphanumeric characters plus the underscore).]]
[[word] [No] [Any word character (alphanumeric characters plus the underscore).]]
[[xdigit] [Yes] [Any hexadecimal digit character.]]
]
[endsect]
[section:optional_char_class_names Character classes that are supported by Unicode Regular Expressions]
The following character classes are only supported by Unicode Regular Expressions:
that is those that use the `u32regex` type. The names used are the same as
those from Chapter 4 of the Unicode standard.
[table
[[Short Name] [Long Name]]
[[ ] [ASCII]]
[[ ] [Any]]
[[ ] [Assigned]]
[[C*] [Other]]
[[Cc] [Control]]
[[Cf] [Format]]
[[Cn] [Not Assigned]]
[[Co] [Private Use]]
[[Cs] [Surrogate]]
[[L*] [Letter]]
[[Ll] [Lowercase Letter]]
[[Lm] [Modifier Letter]]
[[Lo] [Other Letter]]
[[Lt] [Titlecase]]
[[Lu] [Uppercase Letter]]
[[M*] [Mark]]
[[Mc] [Spacing Combining Mark]]
[[Me] [Enclosing Mark]]
[[Mn] [Non-Spacing Mark]]
[[N*] [Number]]
[[Nd] [Decimal Digit Number]]
[[Nl] [Letter Number]]
[[No] [Other Number]]
[[P*] [Punctuation]]
[[Pc] [Connector Punctuation]]
[[Pd] [Dash Punctuation]]
[[Pe] [Close Punctuation]]
[[Pf] [Final Punctuation]]
[[Pi] [Initial Punctuation]]
[[Po] [Other Punctuation]]
[[Ps] [Open Punctuation]]
[[S*] [Symbol]]
[[Sc] [Currency Symbol]]
[[Sk] [Modifier Symbol]]
[[Sm] [Math Symbol]]
[[So] [Other Symbol]]
[[Z*] [Separator]]
[[Zl] [Line Separator]]
[[Zp] [Paragraph Separator]]
[[Zs] [Space Separator]]
]
[endsect]
[endsect]
-128
View File
@@ -1,128 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:collating_names Collating Names]
[section:digraphs Digraphs]
The following are treated as valid digraphs when used as a collating name:
"ae", "Ae", "AE", "ch", "Ch", "CH", "ll", "Ll", "LL", "ss", "Ss", "SS", "nj", "Nj", "NJ", "dz", "Dz", "DZ", "lj", "Lj", "LJ".
So for example the expression:
[pre \[\[.ae.\]-c\] ]
will match any character that collates between the digraph "ae" and the character "c".
[endsect]
[section:posix_symbolic_names POSIX Symbolic Names]
The following symbolic names are recognised as valid collating element names,
in addition to any single character, this allows you to write for example:
[pre \[\[.left-square-bracket.\]\[.right-square-bracket.\]\]]
if you wanted to match either "\[" or "\]".
[table
[[Name][Character]]
[[NUL] [\\x00]]
[[SOH] [\\x01]]
[[STX] [\\x02]]
[[ETX] [\\x03]]
[[EOT] [\\x04]]
[[ENQ] [\\x05]]
[[ACK] [\\x06]]
[[alert] [\\x07]]
[[backspace] [\\x08]]
[[tab] [\\t]]
[[newline] [\\n]]
[[vertical-tab] [\\v]]
[[form-feed] [\\f]]
[[carriage-return] [\\r]]
[[SO] [\\xE]]
[[SI] [\\xF]]
[[DLE] [\\x10]]
[[DC1] [\\x11]]
[[DC2] [\\x12]]
[[DC3] [\\x13]]
[[DC4] [\\x14]]
[[NAK] [\\x15]]
[[SYN] [\\x16]]
[[ETB] [\\x17]]
[[CAN] [\\x18]]
[[EM] [\\x19]]
[[SUB] [\\x1A]]
[[ESC] [\\x1B]]
[[IS4] [\\x1C]]
[[IS3] [\\x1D]]
[[IS2] [\\x1E]]
[[IS1] [\\x1F]]
[[space] [\\x20]]
[[exclamation-mark] [!]]
[[quotation-mark] ["]]
[[number-sign] [#]]
[[dollar-sign] [$]]
[[percent-sign] [%]]
[[ampersand] [&]]
[[apostrophe] [\']]
[[left-parenthesis] [(]]
[[right-parenthesis] [)]]
[[asterisk] [\*]]
[[plus-sign] [+]]
[[comma] [,]]
[[hyphen] [-]]
[[period] [.]]
[[slash] [ / ]]
[[zero] [0]]
[[one] [1]]
[[two] [2]]
[[three] [3]]
[[four] [4]]
[[five] [5]]
[[six] [6]]
[[seven] [7]]
[[eight] [8]]
[[nine] [9]]
[[colon] [\:]]
[[semicolon] [;]]
[[less-than-sign] [<]]
[[equals-sign] [=]]
[[greater-than-sign] [>]]
[[question-mark] [?]]
[[commercial-at] [@]]
[[left-square-bracket] [\[]]
[[backslash][\\]]
[[right-square-bracket][\]]]
[[circumflex][~]]
[[underscore][_]]
[[grave-accent][`]]
[[left-curly-bracket][{]]
[[vertical-line][|]]
[[right-curly-bracket][}]]
[[tilde][~]]
[[DEL][\\x7F]]
]
[endsect]
[section:named_unicode Named Unicode Characters]
When using [link boost_regex.unicode Unicode aware regular expressions] (with the `u32regex` type), all
the normal symbolic names for Unicode characters (those given in Unidata.txt)
are recognised. So for example:
[pre \[\[.CYRILLIC CAPITAL LETTER I.\]\] ]
would match the Unicode character 0x0418.
[endsect]
[endsect]
-131
View File
@@ -1,131 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:concepts Concepts]
[section:charT_concept charT Requirements]
Type `charT` used a template argument to class template [basic_regex],
must have a trivial default constructor, copy constructor,
assignment operator, and destructor. In addition the following requirements
must be met for objects; /c/ of type `charT`, /c1/ and /c2/ of type `charT const`,
and /i/ of type `int`:
[table
[[Expression] [Return type] [Assertion / Note / Pre- / Post-condition]]
[[charT c] [charT] [Default constructor (must be trivial).]]
[[charT c(c1)] [charT] [Copy constructor (must be trivial).]]
[[c1 = c2] [charT] [Assignment operator (must be trivial).]]
[[c1 == c2] [bool] [true if c1 has the same value as c2.]]
[[c1 != c2] [bool] [true if c1 and c2 are not equal.]]
[[c1 < c2] [bool] [true if the value of c1 is less than c2.]]
[[c1 > c2] [bool] [true if the value of c1 is greater than c2.]]
[[c1 <= c2] [bool] [true if c1 is less than or equal to c2.]]
[[c1 >= c2] [bool] [true if c1 is greater than or equal to c2.]]
[[intmax_t i = c1] [int ] [charT must be convertible to an integral type.
Note: type charT is not required to support this operation, if the traits class used supports the full Boost-specific interface, rather than the minimal standardised-interface (see traits class requirements below).]]
[[charT c(i);] [charT] [charT must be constructable from an integral type.]]
]
[endsect]
[section:traits_concept Traits Class Requirements]
There are two sets of requirements for the `traits` template argument to
[basic_regex]: a minimal interface (which is part of the regex standardization proposal),
and an optional Boost-specific enhanced interface.
[h4 Minimal requirements.]
In the following table `X` denotes a traits class defining types and functions for
the character container type `charT`; /u/ is an object of type `X`; /v/ is
an object of type `const X`; /p/ is a value of type `const charT*`;
/I1/ and /I2/ are Input Iterators; /c/ is a value of type `const charT`;
/s/ is an object of type `X::string_type`; /cs/ is an object of type
`const X::string_type`; /b/ is a value of type `bool`; /I/ is a value of
type `int`; /F1/ and /F2/ are values of type `const charT*`; and /loc/ is
an object of type `X::locale_type`.
[table
[[Expression][Return type][Assertion / Note Pre / Post condition]]
[[X::char_type][charT][The character container type used in the implementation of class template basic_regex.]]
[[X::size_type][][An unsigned integer type, capable of holding the length of a null-terminated string of charT's.]]
[[X::string_type][std::basic_string<charT> or std::vector<charT>][]]
[[X::locale_type][Implementation defined][A copy constructible type that represents the locale used by the traits class.]]
[[X::char_class_type]
[Implementation defined]
[A bitmask type representing a particular character classification. Multiple values of this type can be bitwise-or'ed together to obtain a new valid value.]]
[[X::length(p)][X::size_type][Yields the smallest i such that p\[i\] == 0. Complexity is linear in i.]]
[[v.translate(c)]
[X::char_type]
[Returns a character such that for any character d that is to be considered equivalent to c then v.translate(c) == v.translate(d).]]
[[v.translate_nocase(c)]
[X::char_type]
[For all characters C that are to be considered equivalent to c when comparisons are to be performed without regard to case, then v.translate_nocase(c) == v.translate_nocase(C).]]
[[v.transform(F1, F2)]
[X::string_type]
[Returns a sort key for the character sequence designated by the iterator range \[F1, F2) such that if
the character sequence \[G1, G2) sorts before the character sequence \[H1, H2) then
v.transform(G1, G2) < v.transform(H1, H2). ]]
[[v.transform_primary(F1, F2)]
[X::string_type]
[Returns a sort key for the character sequence designated by the iterator range \[F1, F2) such that if the
character sequence \[G1, G2) sorts before the character sequence \[H1, H2) when character case is not considered
then v.transform_primary(G1, G2) < v.transform_primary(H1, H2).]]
[[v.lookup_classname(F1, F2)]
[X::char_class_type]
[Converts the character sequence designated by the iterator range \[F1,F2) into a bitmask type that can subsequently
be passed to isctype. Values returned from lookup_classname can be safely bitwise or'ed together. Returns 0 if the
character sequence is not the name of a character class recognized by X. The value returned shall be independent
of the case of the characters in the sequence.]]
[[v.lookup_collatename(F1, F2)]
[X::string_type]
[Returns a sequence of characters that represents the collating element consisting of the character sequence designated
by the iterator range \[F1, F2). Returns an empty string if the character sequence is not a valid collating element.]]
[[v.isctype(c, v.lookup_classname (F1, F2))][bool][Returns true if character c is a member of the character class designated by the iterator range \[F1, F2), false otherwise.]]
[[v.value(c, I)]
[int]
[Returns the value represented by the digit c in base I if the character c is a valid digit in base I; otherwise returns -1. \[Note: the value of I will only be 8, 10, or 16. -end note\]]]
[[u.imbue(loc)][X::locale_type][Imbues u with the locale loc, returns the previous locale used by u if any. ]]
[[v.getloc()][X::locale_type][Returns the current locale used by v if any. ]]
]
[h4 Additional Optional Requirements]
The following additional requirements are strictly optional,
however in order for [basic_regex] to take advantage of these additional
interfaces, all of the following requirements must be met; [basic_regex]
will detect the presence or absence of the member `boost_extensions_tag` and
configure itself appropriately.
[table
[[Expression][Result][Assertion / Note Pre / Post condition]]
[[X::boost_extensions_tag][An unspecified type.][When present, all of the extensions listed in this table must be present.]]
[[v.syntax_type(c)][regex_constants::syntax_type][Returns a symbolic value of type regex_constants::syntax_type that signifies the meaning of character c within the regular expression grammar.]]
[[v.escape_syntax_type(c)][regex_constants::escape_syntax_type][Returns a symbolic value of type regex_constants::escape_syntax_type, that signifies the meaning of character c within the regular expression grammar, when c has been preceded by an escape character. Precondition: if b is the character preceding c in the expression being parsed then: `v.syntax_type(b) == syntax_escape`]]
[[v.translate(c, b)][X::char_type][Returns a character d such that: for any character d that is to be considered equivalent to c then `v.translate(c,false)==v.translate(d,false)`. Likewise for all characters C that are to be considered equivalent to c when comparisons are to be performed without regard to case, then `v.translate(c,true)==v.translate(C,true)`.]]
[[v.toi(I1, I2, i)][An integer type capable of holding either a charT or an int.][Behaves as follows: if `p == q` or if `*p` is not a digit character then returns -1. Otherwise performs formatted numeric input on the sequence \[p,q) and returns the result as an int. Postcondition: either p == q or *p is a non-digit character.]]
[[v.error_string(I)][std::string][Returns a human readable error string for the error condition i, where i is one of the values enumerated by type regex_constants::error_type. If the value /I/ is not recognized then returns the string "Unknown error" or a localized equivalent.]]
[[v.tolower(c)][X::char_type][Converts c to lower case, used for Perl-style \l and \L formatting operations.]]
[[v.toupper(c)][X::char_type][Converts c to upper case, used for Perl-style \u and \U formatting operations.]]
]
[endsect]
[section:iterator_concepts Iterator Requirements]
The regular expression algorithms (and iterators) take all require a
Bidirectional-Iterator.
[endsect]
[endsect]
-71
View File
@@ -1,71 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:configuration Configuration]
[section:compiler Compiler Setup]
You shouldn't need to do anything special to configure Boost.Regex for use
with your compiler - the [@../../../config/index.html Boost.Config subsystem] should already take care of it,
if you do have problems (or you are using a particularly obscure compiler
or platform) then [@../../../config/index.html Boost.Config] has a configure script that you can run.
[endsect]
[section:standalone Use in Standalone Mode (without the rest of Boost)]
This library may now be used in "standalone" mode without the rest of the Boost C++ libraries,
in order to do this you must either:
* Have a C++17 compiler that supports `__has_include`, in this case if `<boost/config.hpp>` is *not* present
then the library will automoatically enter standalone mode. Or:
* Define BOOST_REGEX_STANDALONE when building.
The main difference between the 2 modes, is that when Boost.Config is present the library will automatically
configure itself around various compiler defects. In particular in order to use the library with exception support
turned off, you will either need a copy of Boost.Config in your include path, or else manually define BOOST_NO_EXCEPTIONS
when building.
[endsect]
[section:locale Locale and traits class selection]
The following macros (see [@../../../../boost/regex/user.hpp user.hpp]) control how Boost.Regex interacts with
the user's locale:
[table
[[macro][description]]
[[BOOST_REGEX_USE_C_LOCALE][Forces Boost.Regex to use the global C locale in its traits class support: this is now deprecated in favour of the C++ locale.]]
[[BOOST_REGEX_USE_CPP_LOCALE][Forces Boost.Regex to use std::locale in it's default traits class, regular expressions can then be imbued with an instance specific locale. This is the default behaviour on non-Windows platforms.]]
[[BOOST_REGEX_NO_W32][Tells Boost.Regex not to use any Win32 API's even when available (implies BOOST_REGEX_USE_CPP_LOCALE unless BOOST_REGEX_USE_C_LOCALE is set).]]
]
[endsect]
[section:tuning Algorithm Tuning]
[table
[[macro][description]]
[[BOOST_REGEX_BLOCKSIZE][Boost.Regex uses largish blocks of memory to act as a stack for the state machine, the larger the block size then the fewer allocations that will take place. This defaults to 4096 bytes, which is large enough to match the vast majority of regular expressions without further allocations, however, you can choose smaller or larger values depending upon your platforms characteristics.]]
[[BOOST_REGEX_MAX_BLOCKS][Tells Boost.Regex how many blocks of size BOOST_REGEX_BLOCKSIZE it is permitted to use. If this value is exceeded then Boost.Regex will stop trying to find a match and throw a std::runtime_error. Defaults to 1024, don't forget to tweak this value if you alter BOOST_REGEX_BLOCKSIZE by much.]]
[[BOOST_REGEX_MAX_CACHE_BLOCKS][Tells Boost.Regex how many memory blocks to store in
it's internal cache - memory blocks are taken from this cache rather than by calling
::operator new. Generally speaking this can be an order of magnitude faster than
calling ::opertator new each time a memory block is required, but has the
downside that Boost.Regex can end up caching a large chunk of memory (by default
up to 16 blocks each of BOOST_REGEX_BLOCKSIZE size). If memory is tight then try
defining this to 0 (disables all caching), or if that is too slow, then a value of
1 or 2, may be sufficient. On the other hand, on large multi-processor,
multi-threaded systems, you may find that a higher value is in order.]]
]
[endsect]
[endsect]
-63
View File
@@ -1,63 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:error_type error_type]
[h4 Synopsis]
Type error type represents the different types of errors that can be raised
by the library when parsing a regular expression.
namespace boost{ namespace regex_constants{
typedef implementation-specific-type error_type;
static const error_type error_collate;
static const error_type error_ctype;
static const error_type error_escape;
static const error_type error_backref;
static const error_type error_brack;
static const error_type error_paren;
static const error_type error_brace;
static const error_type error_badbrace;
static const error_type error_range;
static const error_type error_space;
static const error_type error_badrepeat;
static const error_type error_complexity;
static const error_type error_stack;
static const error_type error_bad_pattern;
} // namespace regex_constants
} // namespace boost
[h4 Description]
The type `error_type` is an implementation-specific enumeration type that may
take one of the following values:
[table
[[Constant][Meaning]]
[[error_collate][An invalid collating element was specified in a \[\[.name.\]\] block.]]
[[error_ctype][An invalid character class name was specified in a \[\[:name:\]\] block.]]
[[error_escape][An invalid or trailing escape was encountered.]]
[[error_backref][A back-reference to a non-existant marked sub-expression was encountered.]]
[[error_brack][An invalid character set \[...\] was encountered.]]
[[error_paren][Mismatched '(' and ')'.]]
[[error_brace][Mismatched '{' and '}'.]]
[[error_badbrace][Invalid contents of a {...} block.]]
[[error_range][A character range was invalid, for example \[d-a\].]]
[[error_space][Out of memory.]]
[[error_badrepeat][An attempt to repeat something that can not be repeated - for example a*+]]
[[error_complexity][The expression became too complex to handle.]]
[[error_stack][Out of program stack space.]]
[[error_bad_pattern][Other unspecified errors.]]
]
[endsect]
-128
View File
@@ -1,128 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:examples Test and Example Programs]
[h4 Test Programs]
[*regress:]
A regression test application that gives the matching/searching algorithms a
full workout. The presence of this program is your guarantee that the
library will behave as claimed - at least as far as those items tested
are concerned - if anyone spots anything that isn't being tested I'd be
glad to hear about it.
Files:
* [@../../test/regress/main.cpp main.cpp]
* [@../../test/regress/basic_tests.cpp basic_tests.cpp]
* [@../../test/regress/test_alt.cpp test_alt.cpp]
* [@../../test/regress/test_anchors.cpp test_anchors.cpp]
* [@../../test/regress/test_asserts.cpp test_asserts.cpp]
* [@../../test/regress/test_backrefs.cpp test_backrefs.cpp]
* [@../../test/regress/test_deprecated.cpp test_deprecated.cpp]
* [@../../test/regress/test_emacs.cpp test_emacs.cpp]
* [@../../test/regress/test_escapes.cpp test_escapes.cpp]
* [@../../test/regress/test_grep.cpp test_grep.cpp]
* [@../../test/regress/test_icu.cpp test_icu.cpp]
* [@../../test/regress/test_locale.cpp test_locale.cpp]
* [@../../test/regress/test_mfc.cpp test_mfc.cpp]
* [@../../test/regress/test_non_greedy_repeats.cpp test_non_greedy_repeats.cpp]
* [@../../test/regress/test_operators.cpp test_operators.cpp]
* [@../../test/regress/test_overloads.cpp test_overloads.cpp]
* [@../../test/regress/test_perl_ex.cpp test_perl_ex.cpp]
* [@../../test/regress/test_replace.cpp test_replace.cpp]
* [@../../test/regress/test_sets.cpp test_sets.cpp]
* [@../../test/regress/test_simple_repeats.cpp test_simple_repeats.cpp]
* [@../../test/regress/test_tricky_cases.cpp test_tricky_cases.cpp]
* [@../../test/regress/test_unicode.cpp test_unicode.cpp]
[*bad_expression_test:]
Verifies that "bad" regular expressions don't cause the matcher to go into
infinite loops, but to throw an exception instead.
Files: [@../../test/pathology/bad_expression_test.cpp bad_expression_test.cpp].
[*recursion_test:]
Verifies that the matcher can't overrun the stack (no matter what the expression).
Files: [@../../test/pathology/recursion_test.cpp recursion_test.cpp].
[*concepts:]
Verifies that the library meets all documented concepts (a compile only test).
Files: [@../../test/concepts/concept_check.cpp concept_check.cpp].
[*captures_test:]
Test code for captures.
Files: [@../../test/captures/captures_test.cpp captures_test.cpp].
[h4 Example programs]
[*grep]
A simple grep implementation, run with the -h command line option to find out its usage.
Files: [@../../example/grep/grep.cpp grep.cpp]
[*timer.exe]
A simple interactive expression matching application, the results of all
matches are timed, allowing the programmer to optimize their regular expressions
where performance is critical.
Files: [@../../example/timer/regex_timer.cpp regex_timer.cpp].
[h4 Code snippets]
The snippets examples contain the code examples used in the documentation:
[@../../example/snippets/captures_example.cpp captures_example.cpp]: Demonstrates the use of captures.
[@../../example/snippets/credit_card_example.cpp credit_card_example.cpp]: Credit card number formatting code.
[@../../example/snippets/partial_regex_grep.cpp partial_regex_grep.cpp]: Search example using partial matches.
[@../../example/snippets/partial_regex_match.cpp partial_regex_match.cpp]: regex_match example using partial matches.
[@../../example/snippets/regex_iterator_example.cpp regex_iterator_example.cpp]: Iterating through a series of matches.
[@../../example/snippets/regex_match_example.cpp regex_match_example.cpp]: ftp based regex_match example.
[@../../example/snippets/regex_merge_example.cpp regex_merge_example.cpp]: regex_merge example: converts a C++ file to syntax highlighted HTML.
[@../../example/snippets/regex_replace_example.cpp regex_replace_example.cpp]: regex_replace example: converts a C++ file to syntax highlighted HTML
[@../../example/snippets/regex_search_example.cpp regex_search_example.cpp]: regex_search example: searches a cpp file for class definitions.
[@../../example/snippets/regex_token_iterator_eg_1.cpp regex_token_iterator_eg_1.cpp]: split a string into a series of tokens.
[@../../example/snippets/regex_token_iterator_eg_2.cpp regex_token_iterator_eg_2.cpp]: enumerate the linked URL's in a HTML file.
The following are deprecated:
[@../../example/snippets/regex_grep_example_1.cpp regex_grep_example_1.cpp]: regex_grep example 1: searches a cpp file for class definitions.
[@../../example/snippets/regex_grep_example_2.cpp regex_grep_example_2.cpp]: regex_grep example 2: searches a cpp file for class definitions, using a global callback function.
[@../../example/snippets/regex_grep_example_3.cpp regex_grep_example_3.cpp]: regex_grep example 2: searches a cpp file for class definitions, using a bound member function callback.
[@../../example/snippets/regex_grep_example_4.cpp regex_grep_example_4.cpp]: regex_grep example 2: searches a cpp file for class definitions, using a C++ Builder closure as a callback.
[@../../example/snippets/regex_split_example_1.cpp regex_split_example_1.cpp]: regex_split example: split a string into tokens.
[@../../example/snippets/regex_split_example_2.cpp regex_split_example_2.cpp] : regex_split example: spit out linked URL's.
[endsect]
-98
View File
@@ -1,98 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:faq FAQ]
[*Q.] I can't get regex++ to work with escape characters, what's going on?
[*A.] If you embed regular expressions in C++ code, then remember that escape
characters are processed twice: once by the C++ compiler, and once by the
Boost.Regex expression compiler, so to pass the regular expression \d+
to Boost.Regex, you need to embed "\\d+" in your code. Likewise to match a
literal backslash you will need to embed "\\\\" in your code.
[*Q.] No matter what I do regex_match always returns false, what's going on?
[*A.] The algorithm regex_match only succeeds if the expression matches *all*
of the text, if you want to *find* a sub-string within the text that matches
the expression then use regex_search instead.
[*Q.] Why does using parenthesis in a POSIX regular expression change the
result of a match?
[*A.] For POSIX (extended and basic) regular expressions, but not for perl regexes,
parentheses don't only mark; they determine what the best match is as well.
When the expression is compiled as a POSIX basic or extended regex then Boost.Regex
follows the POSIX standard leftmost longest rule for determining what matched.
So if there is more than one possible match after considering the whole expression,
it looks next at the first sub-expression and then the second sub-expression
and so on. So...
"'''(0*)([0-9]*)'''" against "00123" would produce
$1 = "00"
$2 = "123"
where as
"0*([0-9])*" against "00123" would produce
$1 = "00123"
If you think about it, had $1 only matched the "123", this would be "less good"
than the match "00123" which is both further to the left and longer. If you
want $1 to match only the "123" part, then you need to use something like:
"0*([1-9][0-9]*)"
as the expression.
[*Q.] Why don't character ranges work properly (POSIX mode only)?
[*A.] The POSIX standard specifies that character range expressions are
locale sensitive - so for example the expression [A-Z] will match any
collating element that collates between 'A' and 'Z'. That means that for
most locales other than "C" or "POSIX", [A-Z] would match the single
character 't' for example, which is not what most people expect - or
at least not what most people have come to expect from regular
expression engines. For this reason, the default behaviour of Boost.Regex
(perl mode) is to turn locale sensitive collation off by not setting the
`regex_constants::collate` compile time flag. However if you set a non-default
compile time flag - for example `regex_constants::extended` or
`regex_constants::basic`, then locale dependent collation will be enabled,
this also applies to the POSIX API functions which use either
`regex_constants::extended` or `regex_constants::basic` internally.
[Note - when `regex_constants::nocollate` in effect, the library behaves
"as if" the LC_COLLATE locale category were always "C", regardless of what
its actually set to - end note].
[*Q.] Why are there no throw specifications on any of the functions?
What exceptions can the library throw?
[*A.] Not all compilers support (or honor) throw specifications, others
support them but with reduced efficiency. Throw specifications may be added
at a later date as compilers begin to handle this better. The library
should throw only three types of exception: [boost::regex_error] can be
thrown by [basic_regex] when compiling a regular expression, `std::runtime_error`
can be thrown when a call to `basic_regex::imbue` tries to open a message
catalogue that doesn't exist, or when a call to [regex_search] or [regex_match]
results in an "everlasting" search, or when a call to `RegEx::GrepFiles` or
`RegEx::FindFiles` tries to open a file that cannot be opened, finally
`std::bad_alloc` can be thrown by just about any of the functions in this library.
[*Q.] Why can't I use the "convenience" versions of regex_match /
regex_search / regex_grep / regex_format / regex_merge?
[*A.] These versions may or may not be available depending upon the
capabilities of your compiler, the rules determining the format of
these functions are quite complex - and only the versions visible to
a standard compliant compiler are given in the help. To find out
what your compiler supports, run <boost/regex.hpp> through your
C++ pre-processor, and search the output file for the function
that you are interested in. Note however, that very few current
compilers still have problems with these overloaded functions.
[endsect]
-102
View File
@@ -1,102 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:boost_format_syntax Boost-Extended Format String Syntax]
Boost-Extended format strings treat all characters as literals except for
'$', '\\', '(', ')', '?', and ':'.
[h4 Grouping]
The characters '(' and ')' perform lexical grouping, so use \\( and \\) if you
want a to output literal parenthesis.
[h4 Conditionals]
The character '?' begins a conditional expression, the general form is:
?Ntrue-expression:false-expression
where N is decimal digit.
If sub-expression N was matched, then true-expression is evaluated and sent to
output, otherwise false-expression is evaluated and sent to output.
You will normally need to surround a conditional-expression with parenthesis in
order to prevent ambiguities.
For example, the format string "(?1foo:bar)" will replace each match found with "foo" if
the sub-expression $1 was matched, and with "bar" otherwise.
For sub-expressions with an index greater than 9, or for access to named sub-expressions use:
?{INDEX}true-expression:false-expression
or
?{NAME}true-expression:false-expression
[h4 Placeholder Sequences]
Placeholder sequences specify that some part of what matched the regular expression
should be sent to output as follows:
[table
[[Placeholder][Meaning]]
[[$&][Outputs what matched the whole expression.]]
[[$MATCH][As $&]]
[[${^MATCH}][As $&]]
[[$\`][Outputs the text between the end of the last match found (or the
start of the text if no previous match was found), and the start
of the current match.]]
[[$PREMATCH][As $\`]]
[[${^PREMATCH}][As $\`]]
[[$'][Outputs all the text following the end of the current match.]]
[[$POSTMATCH][As $']]
[[${^POSTMATCH}][As $']]
[[$+][Outputs what matched the last marked sub-expression in the regular expression.]]
[[$LAST_PAREN_MATCH][As $+]]
[[$LAST_SUBMATCH_RESULT][Outputs what matched the last sub-expression to be actually matched.]]
[[$^N][As $LAST_SUBMATCH_RESULT]]
[[$$][Outputs a literal '$']]
[[$n][Outputs what matched the n'th sub-expression.]]
[[${n}][Outputs what matched the n'th sub-expression.]]
[[$+{NAME}][Outputs whatever matched the sub-expression named "NAME".]]
]
Any $-placeholder sequence not listed above, results in '$' being treated as a literal.
[h4 Escape Sequences]
An escape character followed by any character x, outputs that character unless
x is one of the escape sequences shown below.
[table
[[Escape][Meaning]]
[[\\a][Outputs the bell character: '\\a'.]]
[[\\e][Outputs the ANSI escape character (code point 27).]]
[[\\f][Outputs a form feed character: '\\f']]
[[\\n][Outputs a newline character: '\\n'.]]
[[\\r][Outputs a carriage return character: '\\r'.]]
[[\\t][Outputs a tab character: '\\t'.]]
[[\\v][Outputs a vertical tab character: '\\v'.]]
[[\\xDD][Outputs the character whose hexadecimal code point is 0xDD]]
[[\\x{DDDD}][Outputs the character whose hexadecimal code point is 0xDDDDD]]
[[\\cX][Outputs the ANSI escape sequence "escape-X".]]
[[\\D][If D is a decimal digit in the range 1-9, then outputs the text that matched sub-expression D.]]
[[\\l][Causes the next character to be outputted, to be output in lower case.]]
[[\\u][Causes the next character to be outputted, to be output in upper case.]]
[[\\L][Causes all subsequent characters to be output in lower case, until a \\E is found.]]
[[\\U][Causes all subsequent characters to be output in upper case, until a \\E is found.]]
[[\\E][Terminates a \\L or \\U sequence.]]
]
[endsect]
-69
View File
@@ -1,69 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:perl_format Perl Format String Syntax]
Perl-style format strings treat all characters as literals except
'$' and '\\' which start placeholder and escape sequences respectively.
Placeholder sequences specify that some part of what matched the regular expression
should be sent to output as follows:
[table
[[Placeholder][Meaning]]
[[$&][Outputs what matched the whole expression.]]
[[$MATCH][As $&]]
[[${^MATCH}][As $&]]
[[$\`][Outputs the text between the end of the last match found (or the
start of the text if no previous match was found), and the start
of the current match.]]
[[$PREMATCH][As $\`]]
[[${^PREMATCH}][As $\`]]
[[$'][Outputs all the text following the end of the current match.]]
[[$POSTMATCH][As $']]
[[${^POSTMATCH}][As $']]
[[$+][Outputs what matched the last marked sub-expression in the regular expression.]]
[[$LAST_PAREN_MATCH][As $+]]
[[$LAST_SUBMATCH_RESULT][Outputs what matched the last sub-expression to be actually matched.]]
[[$^N][As $LAST_SUBMATCH_RESULT]]
[[$$][Outputs a literal '$']]
[[$n][Outputs what matched the n'th sub-expression.]]
[[${n}][Outputs what matched the n'th sub-expression.]]
[[$+{NAME}][Outputs whatever matched the sub-expression named "NAME".]]
]
Any $-placeholder sequence not listed above, results in '$' being treated
as a literal.
An escape character followed by any character x, outputs that character unless
x is one of the escape sequences shown below.
[table
[[Escape][Meaning]]
[[\\a][Outputs the bell character: '\\a'.]]
[[\\e][Outputs the ANSI escape character (code point 27).]]
[[\\f][Outputs a form feed character: '\\f']]
[[\\n][Outputs a newline character: '\\n'.]]
[[\\r][Outputs a carriage return character: '\\r'.]]
[[\\t][Outputs a tab character: '\\t'.]]
[[\\v][Outputs a vertical tab character: '\\v'.]]
[[\\xDD][Outputs the character whose hexadecimal code point is 0xDD]]
[[\\x{DDDD}][Outputs the character whose hexadecimal code point is 0xDDDDD]]
[[\\cX][Outputs the ANSI escape sequence "escape-X".]]
[[\\D][If D is a decimal digit in the range 1-9, then outputs the text that matched sub-expression D.]]
[[\\l][Causes the next character to be outputted, to be output in lower case.]]
[[\\u][Causes the next character to be outputted, to be output in upper case.]]
[[\\L][Causes all subsequent characters to be output in lower case, until a \\E is found.]]
[[\\U][Causes all subsequent characters to be output in upper case, until a \\E is found.]]
[[\\E][Terminates a \\L or \\U sequence.]]
]
[endsect]
-41
View File
@@ -1,41 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:sed_format Sed Format String Syntax]
Sed-style format strings treat all characters as literals except:
[table
[[character][description]]
[[&][The ampersand character is replaced in the output stream by
the whole of what matched the regular expression. Use
\\& to output a literal '&' character.]]
[[\\][Specifies an escape sequence.]]
]
An escape character followed by any character x, outputs that character unless x
is one of the escape sequences shown below.
[table
[[Escape][Meaning]]
[[\\a][Outputs the bell character: '\\a'.]]
[[\\e][Outputs the ANSI escape character (code point 27).]]
[[\\f][Outputs a form feed character: '\\f']]
[[\\n][Outputs a newline character: '\\n'.]]
[[\\r][Outputs a carriage return character: '\\r'.]]
[[\\t][Outputs a tab character: '\\t'.]]
[[\\v][Outputs a vertical tab character: '\\v'.]]
[[\\xDD][Outputs the character whose hexadecimal code point is 0xDD]]
[[\\x{DDDD}][Outputs the character whose hexadecimal code point is 0xDDDDD]]
[[\\cX][Outputs the ANSI escape sequence "escape-X".]]
[[\\D][If D is a decimal digit in the range 1-9, then outputs the text that matched sub-expression D.]]
]
[endsect]
-26
View File
@@ -1,26 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:format Search and Replace Format String Syntax]
Format strings are used by the algorithm [regex_replace] and by
[match_results_format], and are used to transform one string into another.
There are three kind of format string: [sed_format], [perl_format] and [boost_extended_format].
Alternatively, when the flag `format_literal` is passed to one of these functions,
then the format string is treated as a string literal, and is copied unchanged
to the output.
[include format_sed_syntax.qbk]
[include format_perl_syntax.qbk]
[include format_boost_syntax.qbk]
[endsect]
-35
View File
@@ -1,35 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:futher References and Further Information]
The main Perl regular expression tutorial can be found [@http://perldoc.perl.org/perlretut.html here],
there's a much shorter summary of the main features [@https://www.cs.tut.fi/~jkorpela/perl/regexp.html here].
The main book on regular expressions is
[@http://www.oreilly.com/catalog/regex/ Mastering Regular Expressions, published by O'Reilly].
Boost.Regex forms the basis for the regular expression chapter of the [tr1].
The [@http://www.opengroup.org/onlinepubs/7908799/toc.htm Open Unix Specification]
contains a wealth of useful material,
including the POSIX regular expression syntax.
The [@http://www.cs.ucr.edu/~stelo/pattern.html Pattern Matching Pointers]
site is a "must visit" resource for anyone interested in pattern matching.
[@http://glimpse.cs.arizona.edu/ Glimpse and Agrep], use a simplified
regular expression syntax to achieve faster search times.
[@http://glimpse.cs.arizona.edu/udi.html Udi Manber]
and [@http://www.dcc.uchile.cl/~rbaeza/ Ricardo Baeza-Yates] both have a
selection of useful pattern matching papers available from their respective web sites.
[endsect]
-22
View File
@@ -1,22 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:headers Headers]
There are two main headers used by this library: `<boost/regex.hpp>`
provides full access to the main template library, while `<boost/cregex.hpp>`
provides access to the (deprecated) high level class RegEx, and the
POSIX API functions.
There is also a header containing only forward declarations
`<boost/regex_fwd.hpp>` for use when an interface is dependent upon
[basic_regex], but otherwise does not need the full definitions.
[endsect]
-236
View File
@@ -1,236 +0,0 @@
[/
Copyright 2006-2007 John Maddock.
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:history History]
New issues should be submitted at [@https://github.com/boostorg/regex/issues https://github.com/boostorg/regex/issues]
Currently open issues can be viewed [@https://github.com/boostorg/regex/issues?q=is%3Aopen+is%3Aissue here].
All issues including closed ones can be viewed [@https://github.com/boostorg/regex/issues?q=is%3Aissue+is%3Aclosed here].
[h4 Boost.Regex-7.0.1 (boost-1.79.0)]
* Minor fix for setting building with -DBOOST_REGEX_MAX_CACHE_BLOCKS=0 and `<atomic>` present.
[h4 Boost.Regex-7.0.0 (Boost-1.78.0)]
* [*Breaking Change:] Change \B to be the opposite of \b as per Perl behaviour.
* Change w32_regex_traits.hpp so that windows.h is no longer included.
* Fxed fuzzing related issues [@https://github.com/boostorg/regex/issues/156 #151], [@https://github.com/boostorg/regex/issues/156 #152], [@https://github.com/boostorg/regex/issues/156 #153], [@https://github.com/boostorg/regex/issues/156 #156].
[h4 Boost.Regex-6.0.0 (Boost-1.77.0)]
* Big change to header only library.
* Deprecate C++03 support.
[h4 Boost.Regex-5.1.4 (Boost-172.0)]
* Minor build fixes, see [@https://github.com/boostorg/regex/issues/89 #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: [@https://svn.boost.org/trac/boost/ticket/12818 #12818].
[h4 Boost.Regex-5.1.2 (Boost-1.62.0)]
* Fix buffer over-run error when parsing certain invalid regexes, see [@https://svn.boost.org/trac/boost/ticket/12222 #12222].
* Fix detection of ICU in library build, see [@https://svn.boost.org/trac/boost/ticket/12152 #12152].
* Fix bug in case sensitivity change, see [@https://svn.boost.org/trac/boost/ticket/11940 #11940].
* Allow types wider than int in `\x{}` expressions (for char32_t etc), see [@https://svn.boost.org/trac/boost/ticket/11988 #11988].
[h4 Boost.Regex-5.1.1 (Boost-1.61.0)]
* Change to lockfree implementation of memory cache, see [@https://github.com/boostorg/regex/pull/23 PR#23].
[h4 Boost.Regex-5.1.0 (Boost-1.60.0)]
* Add support for Perl's backtracking control verbs, see [@https://svn.boost.org/trac/boost/ticket/11205 #11205]. Note however, that
(*MARK) and operations on marks are not currently supported.
* Fix incorrect range end when matching \[\[:unicode:\]\], see [@https://svn.boost.org/trac/boost/ticket/11524 #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 [@https://svn.boost.org/trac/boost/ticket/11472 #11472].
* Make sub_match a valid C++ range type, see [@https://svn.boost.org/trac/boost/ticket/11036 #11036].
[h4 Boost.Regex-5.0.1 (Boost-1.58.0)]
* Fixed some typos as in [@https://svn.boost.org/trac/boost/ticket/10682 #10682].
* Merged [@https://github.com/boostorg/regex/pull/6 pull-request #6] for Coverity warnings.
* Merged [@https://github.com/boostorg/regex/pull/7 pull-request #7] for Coverity warnings.
* Merged [@https://github.com/boostorg/regex/pull/8 pull-request #8] for Coverity warnings.
* Merged [@https://github.com/boostorg/regex/pull/10 pull-request #10] to enable more build variants when linking to ICU.
* Fix issue with ICU and partial matches, see [@https://svn.boost.org/trac/boost/ticket/10114 #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 [@https://svn.boost.org/trac/boost/ticket/9227 #9227]
* Fixed issue [@https://svn.boost.org/trac/boost/ticket/8903 #8903].
* Fixed documentation typos from [@https://svn.boost.org/trac/boost/ticket/9283 #9283].
* Fixed bug in collation code that failed if the locale generated collation strings with embedded nul's,
see [@https://svn.boost.org/trac/boost/ticket/9451 #9451].
* Apply patch for unusual thread usage (no statically initialized mutexes), see [@https://svn.boost.org/trac/boost/ticket/9461 #9461].
* Added better checks for invalid UTF-8 sequences, see [@https://svn.boost.org/trac/boost/ticket/9473 #9473].
[h4 Boost-1.54]
Fixed issue [@https://svn.boost.org/trac/boost/ticket/8569 #8569].
[h4 Boost-1.53]
Fixed Issues:
[@https://svn.boost.org/trac/boost/ticket/7744 #7744], [@https://svn.boost.org/trac/boost/ticket/7644 #7644].
[h4 Boost-1.51]
Fixed issues:
[@https://svn.boost.org/trac/boost/ticket/589 #589], [@https://svn.boost.org/trac/boost/ticket/7084 #7084],
[@https://svn.boost.org/trac/boost/ticket/7032 #7032], [@https://svn.boost.org/trac/boost/ticket/6346 #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:
[@https://svn.boost.org/trac/boost/ticket/688 #698], [@https://svn.boost.org/trac/boost/ticket/5835 #5835],
[@https://svn.boost.org/trac/boost/ticket/5958 #5958], [@https://svn.boost.org/trac/boost/ticket/5736 #5736].
[h4 Boost 1.47]
Fixed issues:
[@https://svn.boost.org/trac/boost/ticket/5223 #5223], [@https://svn.boost.org/trac/boost/ticket/5353 #5353],
[@https://svn.boost.org/trac/boost/ticket/5363 #5363], [@https://svn.boost.org/trac/boost/ticket/5462 #5462],
[@https://svn.boost.org/trac/boost/ticket/5472 #5472], [@https://svn.boost.org/trac/boost/ticket/5504 #5504].
[h4 Boost 1.44]
Fixed issues:
[@https://svn.boost.org/trac/boost/ticket/4309 #4309],
[@https://svn.boost.org/trac/boost/ticket/4215 #4215],
[@https://svn.boost.org/trac/boost/ticket/4212 #4212],
[@https://svn.boost.org/trac/boost/ticket/4191 #4191],
[@https://svn.boost.org/trac/boost/ticket/4132 #4132],
[@https://svn.boost.org/trac/boost/ticket/4123 #4123],
[@https://svn.boost.org/trac/boost/ticket/4114 #4114],
[@https://svn.boost.org/trac/boost/ticket/4036 #4036],
[@https://svn.boost.org/trac/boost/ticket/4020 #4020],
[@https://svn.boost.org/trac/boost/ticket/3941 #3941],
[@https://svn.boost.org/trac/boost/ticket/3902 #3902],
[@https://svn.boost.org/trac/boost/ticket/3890 #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
[@https://svn.boost.org/trac/boost/ticket/2802 #2802],
[@https://svn.boost.org/trac/boost/ticket/3425 #3425],
[@https://svn.boost.org/trac/boost/ticket/3507 #3507],
[@https://svn.boost.org/trac/boost/ticket/3546 #3546],
[@https://svn.boost.org/trac/boost/ticket/3631 #3631],
[@https://svn.boost.org/trac/boost/ticket/3632 #3632],
[@https://svn.boost.org/trac/boost/ticket/3715 #3715],
[@https://svn.boost.org/trac/boost/ticket/3718 #3718],
[@https://svn.boost.org/trac/boost/ticket/3763 #3763],
[@https://svn.boost.org/trac/boost/ticket/3764 #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
[@https://svn.boost.org/trac/boost/ticket/1081 #1081].
* Added support for Perl style ${n} expressions in format strings
(issue [@https://svn.boost.org/trac/boost/ticket/2556 #2556]).
* Added support for accessing the location of sub-expressions within the
regular expression string
(issue [@https://svn.boost.org/trac/boost/ticket/2269 #2269]).
* Fixed compiler compatibility issues
[@https://svn.boost.org/trac/boost/ticket/2244 #2244],
[@https://svn.boost.org/trac/boost/ticket/2514 #2514],
and
[@https://svn.boost.org/trac/boost/ticket/2244 #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.
[endsect]
-80
View File
@@ -1,80 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Background Information</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../index.html" title="Boost.Regex 7.0.1">
<link rel="prev" href="ref/internals/uni_iter.html" title="Unicode Iterators">
<link rel="next" href="background/headers.html" title="Headers">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="ref/internals/uni_iter.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="background/headers.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_regex.background"></a><a class="link" href="background.html" title="Background Information">Background Information</a>
</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="background/headers.html">Headers</a></span></dt>
<dt><span class="section"><a href="background/locale.html">Localization</a></span></dt>
<dt><span class="section"><a href="background/thread_safety.html">Thread Safety</a></span></dt>
<dt><span class="section"><a href="background/examples.html">Test and Example Programs</a></span></dt>
<dt><span class="section"><a href="background/futher.html">References and Further
Information</a></span></dt>
<dt><span class="section"><a href="background/faq.html">FAQ</a></span></dt>
<dt><span class="section"><a href="background/performance.html">Performance</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="background/performance/section_id1378460593.html">Testing
simple leftmost-longest matches (platform = linux, compiler = GNU C++ version
6.3.0)</a></span></dt>
<dt><span class="section"><a href="background/performance/section_id1675827111.html">Testing
Perl searches (platform = linux, compiler = GNU C++ version 6.3.0)</a></span></dt>
<dt><span class="section"><a href="background/performance/section_id3141719723.html">Testing
simple leftmost-longest matches (platform = Windows x64, compiler = Microsoft
Visual C++ version 14.1)</a></span></dt>
<dt><span class="section"><a href="background/performance/section_id3258595385.html">Testing
leftmost-longest searches (platform = Windows x64, compiler = Microsoft Visual
C++ version 14.1)</a></span></dt>
<dt><span class="section"><a href="background/performance/section_id3261825021.html">Testing
simple Perl matches (platform = linux, compiler = GNU C++ version 6.3.0)</a></span></dt>
<dt><span class="section"><a href="background/performance/section_id3752650613.html">Testing
Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version
14.1)</a></span></dt>
<dt><span class="section"><a href="background/performance/section_id4128344975.html">Testing
simple Perl matches (platform = Windows x64, compiler = Microsoft Visual
C++ version 14.1)</a></span></dt>
<dt><span class="section"><a href="background/performance/section_id4148872883.html">Testing
leftmost-longest searches (platform = linux, compiler = GNU C++ version 6.3.0)</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="background/standards.html">Standards Conformance</a></span></dt>
<dt><span class="section"><a href="background/redist.html">Redistributables</a></span></dt>
<dt><span class="section"><a href="background/acknowledgements.html">Acknowledgements</a></span></dt>
<dt><span class="section"><a href="background/history.html">History</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="ref/internals/uni_iter.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="background/headers.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,87 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Acknowledgements</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="redist.html" title="Redistributables">
<link rel="next" href="history.html" title="History">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="redist.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
</h3></div></div></div>
<p>
The author can be contacted at john - at - johnmaddock.co.uk; the home page
for this library is at <a href="http://www.boost.org" target="_top">www.boost.org</a>.
</p>
<p>
I am indebted to <a href="http://www.cs.princeton.edu/~rs/" target="_top">Robert Sedgewick's
"Algorithms in C++"</a> for forcing me to think about algorithms
and their performance, and to the folks at boost for forcing me to think,
period.
</p>
<p>
<a href="http://www.boost-consulting.com/" target="_top">Eric Niebler</a>, author
of Boost.Expressive and the <a href="http://research.microsoft.com/projects/greta" target="_top">GRETA
regular expression component</a>, has shared several important ideas,
in a series of long discussions.
</p>
<p>
Pete Becker, of <a href="http://www.versatilecoding.com" target="_top">Roundhouse Consulting,
Ltd.</a>, has helped enormously with the standardisation proposal language.
</p>
<p>
The following people have all contributed useful comments or fixes: Dave
Abrahams, Mike Allison, Edan Ayal, Jayashree Balasubramanian, Jan Bölsche,
Beman Dawes, Paul Baxter, David Bergman, David Dennerline, Edward Diener,
Peter Dimov, Robert Dunn, Fabio Forno, Tobias Gabrielsson, Rob Gillen, Marc
Gregoire, Chris Hecker, Nick Hodapp, Jesse Jones, Martin Jost, Boris Krasnovskiy,
Jan Hermelink, Max Leung, Wei-hao Lin, Jens Maurer, Richard Peters, Heiko
Schmidt, Jason Shirk, Gerald Slacik, Scobie Smith, Mike Smyth, Alexander
Sokolovsky, Hervé Poirier, Michael Raykh, Marc Recht, Scott VanCamp, Bruno
Voigt, Alexey Voinov, Jerry Waldorf, Rob Ward, Lealon Watts, John Wismar,
Thomas Witt and Yuval Yosef.
</p>
<p>
If I've missed your name off (I'm sure there are a few, just not who they
are...) then please do get in touch.
</p>
<p>
I am also grateful to the manuals supplied with the Henry Spencer, PCRE,
Perl and GNU regular expression libraries - wherever possible I have tried
to maintain compatibility with these libraries and with the POSIX standard
- the code however is entirely my own, including any bugs! I can absolutely
guarantee that I will not fix any bugs I don't know about, so if you have
any comments or spot any bugs, please get in touch.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="redist.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="history.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,274 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test and Example Programs</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="thread_safety.html" title="Thread Safety">
<link rel="next" href="futher.html" title="References and Further Information">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="thread_safety.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="futher.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.examples"></a><a class="link" href="examples.html" title="Test and Example Programs">Test and Example Programs</a>
</h3></div></div></div>
<h5>
<a name="boost_regex.background.examples.h0"></a>
<span class="phrase"><a name="boost_regex.background.examples.test_programs"></a></span><a class="link" href="examples.html#boost_regex.background.examples.test_programs">Test
Programs</a>
</h5>
<p>
<span class="bold"><strong>regress:</strong></span>
</p>
<p>
A regression test application that gives the matching/searching algorithms
a full workout. The presence of this program is your guarantee that the library
will behave as claimed - at least as far as those items tested are concerned
- if anyone spots anything that isn't being tested I'd be glad to hear about
it.
</p>
<p>
Files:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<a href="../../../../test/regress/main.cpp" target="_top">main.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/basic_tests.cpp" target="_top">basic_tests.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_alt.cpp" target="_top">test_alt.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_anchors.cpp" target="_top">test_anchors.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_asserts.cpp" target="_top">test_asserts.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_backrefs.cpp" target="_top">test_backrefs.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_deprecated.cpp" target="_top">test_deprecated.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_emacs.cpp" target="_top">test_emacs.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_escapes.cpp" target="_top">test_escapes.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_grep.cpp" target="_top">test_grep.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_icu.cpp" target="_top">test_icu.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_locale.cpp" target="_top">test_locale.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_mfc.cpp" target="_top">test_mfc.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_non_greedy_repeats.cpp" target="_top">test_non_greedy_repeats.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_operators.cpp" target="_top">test_operators.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_overloads.cpp" target="_top">test_overloads.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_perl_ex.cpp" target="_top">test_perl_ex.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_replace.cpp" target="_top">test_replace.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_sets.cpp" target="_top">test_sets.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_simple_repeats.cpp" target="_top">test_simple_repeats.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_tricky_cases.cpp" target="_top">test_tricky_cases.cpp</a>
</li>
<li class="listitem">
<a href="../../../../test/regress/test_unicode.cpp" target="_top">test_unicode.cpp</a>
</li>
</ul></div>
<p>
<span class="bold"><strong>bad_expression_test:</strong></span>
</p>
<p>
Verifies that "bad" regular expressions don't cause the matcher
to go into infinite loops, but to throw an exception instead.
</p>
<p>
Files: <a href="../../../../test/pathology/bad_expression_test.cpp" target="_top">bad_expression_test.cpp</a>.
</p>
<p>
<span class="bold"><strong>recursion_test:</strong></span>
</p>
<p>
Verifies that the matcher can't overrun the stack (no matter what the expression).
</p>
<p>
Files: <a href="../../../../test/pathology/recursion_test.cpp" target="_top">recursion_test.cpp</a>.
</p>
<p>
<span class="bold"><strong>concepts:</strong></span>
</p>
<p>
Verifies that the library meets all documented concepts (a compile only test).
</p>
<p>
Files: <a href="../../../../test/concepts/concept_check.cpp" target="_top">concept_check.cpp</a>.
</p>
<p>
<span class="bold"><strong>captures_test:</strong></span>
</p>
<p>
Test code for captures.
</p>
<p>
Files: <a href="../../../../test/captures/captures_test.cpp" target="_top">captures_test.cpp</a>.
</p>
<h5>
<a name="boost_regex.background.examples.h1"></a>
<span class="phrase"><a name="boost_regex.background.examples.example_programs"></a></span><a class="link" href="examples.html#boost_regex.background.examples.example_programs">Example
programs</a>
</h5>
<p>
<span class="bold"><strong>grep</strong></span>
</p>
<p>
A simple grep implementation, run with the -h command line option to find
out its usage.
</p>
<p>
Files: <a href="../../../../example/grep/grep.cpp" target="_top">grep.cpp</a>
</p>
<p>
<span class="bold"><strong>timer.exe</strong></span>
</p>
<p>
A simple interactive expression matching application, the results of all
matches are timed, allowing the programmer to optimize their regular expressions
where performance is critical.
</p>
<p>
Files: <a href="../../../../example/timer/regex_timer.cpp" target="_top">regex_timer.cpp</a>.
</p>
<h5>
<a name="boost_regex.background.examples.h2"></a>
<span class="phrase"><a name="boost_regex.background.examples.code_snippets"></a></span><a class="link" href="examples.html#boost_regex.background.examples.code_snippets">Code
snippets</a>
</h5>
<p>
The snippets examples contain the code examples used in the documentation:
</p>
<p>
<a href="../../../../example/snippets/captures_example.cpp" target="_top">captures_example.cpp</a>:
Demonstrates the use of captures.
</p>
<p>
<a href="../../../../example/snippets/credit_card_example.cpp" target="_top">credit_card_example.cpp</a>:
Credit card number formatting code.
</p>
<p>
<a href="../../../../example/snippets/partial_regex_grep.cpp" target="_top">partial_regex_grep.cpp</a>:
Search example using partial matches.
</p>
<p>
<a href="../../../../example/snippets/partial_regex_match.cpp" target="_top">partial_regex_match.cpp</a>:
regex_match example using partial matches.
</p>
<p>
<a href="../../../../example/snippets/regex_iterator_example.cpp" target="_top">regex_iterator_example.cpp</a>:
Iterating through a series of matches.
</p>
<p>
<a href="../../../../example/snippets/regex_match_example.cpp" target="_top">regex_match_example.cpp</a>:
ftp based regex_match example.
</p>
<p>
<a href="../../../../example/snippets/regex_merge_example.cpp" target="_top">regex_merge_example.cpp</a>:
regex_merge example: converts a C++ file to syntax highlighted HTML.
</p>
<p>
<a href="../../../../example/snippets/regex_replace_example.cpp" target="_top">regex_replace_example.cpp</a>:
regex_replace example: converts a C++ file to syntax highlighted HTML
</p>
<p>
<a href="../../../../example/snippets/regex_search_example.cpp" target="_top">regex_search_example.cpp</a>:
regex_search example: searches a cpp file for class definitions.
</p>
<p>
<a href="../../../../example/snippets/regex_token_iterator_eg_1.cpp" target="_top">regex_token_iterator_eg_1.cpp</a>:
split a string into a series of tokens.
</p>
<p>
<a href="../../../../example/snippets/regex_token_iterator_eg_2.cpp" target="_top">regex_token_iterator_eg_2.cpp</a>:
enumerate the linked URL's in a HTML file.
</p>
<p>
The following are deprecated:
</p>
<p>
<a href="../../../../example/snippets/regex_grep_example_1.cpp" target="_top">regex_grep_example_1.cpp</a>:
regex_grep example 1: searches a cpp file for class definitions.
</p>
<p>
<a href="../../../../example/snippets/regex_grep_example_2.cpp" target="_top">regex_grep_example_2.cpp</a>:
regex_grep example 2: searches a cpp file for class definitions, using a
global callback function.
</p>
<p>
<a href="../../../../example/snippets/regex_grep_example_3.cpp" target="_top">regex_grep_example_3.cpp</a>:
regex_grep example 2: searches a cpp file for class definitions, using a
bound member function callback.
</p>
<p>
<a href="../../../../example/snippets/regex_grep_example_4.cpp" target="_top">regex_grep_example_4.cpp</a>:
regex_grep example 2: searches a cpp file for class definitions, using a
C++ Builder closure as a callback.
</p>
<p>
<a href="../../../../example/snippets/regex_split_example_1.cpp" target="_top">regex_split_example_1.cpp</a>:
regex_split example: split a string into tokens.
</p>
<p>
<a href="../../../../example/snippets/regex_split_example_2.cpp" target="_top">regex_split_example_2.cpp</a>
: regex_split example: spit out linked URL's.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="thread_safety.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="futher.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
-155
View File
@@ -1,155 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FAQ</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="futher.html" title="References and Further Information">
<link rel="next" href="performance.html" title="Performance">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="futher.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="performance.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.faq"></a><a class="link" href="faq.html" title="FAQ">FAQ</a>
</h3></div></div></div>
<p>
<span class="bold"><strong>Q.</strong></span> I can't get regex++ to work with escape
characters, what's going on?
</p>
<p>
<span class="bold"><strong>A.</strong></span> If you embed regular expressions in C++
code, then remember that escape characters are processed twice: once by the
C++ compiler, and once by the Boost.Regex expression compiler, so to pass
the regular expression \d+ to Boost.Regex, you need to embed "\d+"
in your code. Likewise to match a literal backslash you will need to embed
"\\" in your code.
</p>
<p>
<span class="bold"><strong>Q.</strong></span> No matter what I do regex_match always
returns false, what's going on?
</p>
<p>
<span class="bold"><strong>A.</strong></span> The algorithm regex_match only succeeds
if the expression matches <span class="bold"><strong>all</strong></span> of the text,
if you want to <span class="bold"><strong>find</strong></span> a sub-string within
the text that matches the expression then use regex_search instead.
</p>
<p>
<span class="bold"><strong>Q.</strong></span> Why does using parenthesis in a POSIX
regular expression change the result of a match?
</p>
<p>
<span class="bold"><strong>A.</strong></span> For POSIX (extended and basic) regular
expressions, but not for perl regexes, parentheses don't only mark; they
determine what the best match is as well. When the expression is compiled
as a POSIX basic or extended regex then Boost.Regex follows the POSIX standard
leftmost longest rule for determining what matched. So if there is more than
one possible match after considering the whole expression, it looks next
at the first sub-expression and then the second sub-expression and so on.
So...
</p>
<p>
"(0*)([0-9]*)" against "00123" would produce $1 = "00"
$2 = "123"
</p>
<p>
where as
</p>
<p>
"0*([0-9])*" against "00123" would produce $1 = "00123"
</p>
<p>
If you think about it, had $1 only matched the "123", this would
be "less good" than the match "00123" which is both further
to the left and longer. If you want $1 to match only the "123"
part, then you need to use something like:
</p>
<p>
"0*([1-9][0-9]*)"
</p>
<p>
as the expression.
</p>
<p>
<span class="bold"><strong>Q.</strong></span> Why don't character ranges work properly
(POSIX mode only)?
</p>
<p>
<span class="bold"><strong>A.</strong></span> The POSIX standard specifies that character
range expressions are locale sensitive - so for example the expression [A-Z]
will match any collating element that collates between 'A' and 'Z'. That
means that for most locales other than "C" or "POSIX",
[A-Z] would match the single character 't' for example, which is not what
most people expect - or at least not what most people have come to expect
from regular expression engines. For this reason, the default behaviour of
Boost.Regex (perl mode) is to turn locale sensitive collation off by not
setting the <code class="computeroutput"><span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">collate</span></code>
compile time flag. However if you set a non-default compile time flag - for
example <code class="computeroutput"><span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">extended</span></code> or <code class="computeroutput"><span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">basic</span></code>,
then locale dependent collation will be enabled, this also applies to the
POSIX API functions which use either <code class="computeroutput"><span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">extended</span></code>
or <code class="computeroutput"><span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">basic</span></code> internally. [Note - when <code class="computeroutput"><span class="identifier">regex_constants</span><span class="special">::</span><span class="identifier">nocollate</span></code> in effect, the library behaves
"as if" the LC_COLLATE locale category were always "C",
regardless of what its actually set to - end note].
</p>
<p>
<span class="bold"><strong>Q.</strong></span> Why are there no throw specifications
on any of the functions? What exceptions can the library throw?
</p>
<p>
<span class="bold"><strong>A.</strong></span> Not all compilers support (or honor)
throw specifications, others support them but with reduced efficiency. Throw
specifications may be added at a later date as compilers begin to handle
this better. The library should throw only three types of exception: [boost::regex_error]
can be thrown by <a class="link" href="../ref/basic_regex.html" title="basic_regex"><code class="computeroutput"><span class="identifier">basic_regex</span></code></a> when compiling a regular
expression, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code> can be thrown when a call
to <code class="computeroutput"><span class="identifier">basic_regex</span><span class="special">::</span><span class="identifier">imbue</span></code> tries to open a message catalogue
that doesn't exist, or when a call to <a class="link" href="../ref/regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a> or <a class="link" href="../ref/regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a> results in an "everlasting"
search, or when a call to <code class="computeroutput"><span class="identifier">RegEx</span><span class="special">::</span><span class="identifier">GrepFiles</span></code>
or <code class="computeroutput"><span class="identifier">RegEx</span><span class="special">::</span><span class="identifier">FindFiles</span></code> tries to open a file that cannot
be opened, finally <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bad_alloc</span></code> can be thrown by just about any
of the functions in this library.
</p>
<p>
<span class="bold"><strong>Q.</strong></span> Why can't I use the "convenience"
versions of regex_match / regex_search / regex_grep / regex_format / regex_merge?
</p>
<p>
<span class="bold"><strong>A.</strong></span> These versions may or may not be available
depending upon the capabilities of your compiler, the rules determining the
format of these functions are quite complex - and only the versions visible
to a standard compliant compiler are given in the help. To find out what
your compiler supports, run &lt;boost/regex.hpp&gt; through your C++ pre-processor,
and search the output file for the function that you are interested in. Note
however, that very few current compilers still have problems with these overloaded
functions.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="futher.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="performance.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,76 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>References and Further Information</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="examples.html" title="Test and Example Programs">
<link rel="next" href="faq.html" title="FAQ">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="examples.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="faq.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.futher"></a><a class="link" href="futher.html" title="References and Further Information">References and Further
Information</a>
</h3></div></div></div>
<p>
The main Perl regular expression tutorial can be found <a href="http://perldoc.perl.org/perlretut.html" target="_top">here</a>,
there's a much shorter summary of the main features <a href="https://www.cs.tut.fi/~jkorpela/perl/regexp.html" target="_top">here</a>.
</p>
<p>
The main book on regular expressions is <a href="http://www.oreilly.com/catalog/regex/" target="_top">Mastering
Regular Expressions, published by O'Reilly</a>.
</p>
<p>
Boost.Regex forms the basis for the regular expression chapter of the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
Report on C++ Library Extensions</a>.
</p>
<p>
The <a href="http://www.opengroup.org/onlinepubs/7908799/toc.htm" target="_top">Open
Unix Specification</a> contains a wealth of useful material, including
the POSIX regular expression syntax.
</p>
<p>
The <a href="http://www.cs.ucr.edu/~stelo/pattern.html" target="_top">Pattern Matching
Pointers</a> site is a "must visit" resource for anyone interested
in pattern matching.
</p>
<p>
<a href="http://glimpse.cs.arizona.edu/" target="_top">Glimpse and Agrep</a>, use
a simplified regular expression syntax to achieve faster search times.
</p>
<p>
<a href="http://glimpse.cs.arizona.edu/udi.html" target="_top">Udi Manber</a> and
<a href="http://www.dcc.uchile.cl/~rbaeza/" target="_top">Ricardo Baeza-Yates</a>
both have a selection of useful pattern matching papers available from their
respective web sites.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="examples.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="faq.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,54 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Headers</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="../background.html" title="Background Information">
<link rel="next" href="locale.html" title="Localization">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../background.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="locale.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.headers"></a><a class="link" href="headers.html" title="Headers">Headers</a>
</h3></div></div></div>
<p>
There are two main headers used by this library: <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
provides full access to the main template library, while <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cregex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
provides access to the (deprecated) high level class RegEx, and the POSIX
API functions.
</p>
<p>
There is also a header containing only forward declarations <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex_fwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
for use when an interface is dependent upon <a class="link" href="../ref/basic_regex.html" title="basic_regex"><code class="computeroutput"><span class="identifier">basic_regex</span></code></a>, but otherwise does
not need the full definitions.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../background.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="locale.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,567 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>History</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="acknowledgements.html" title="Acknowledgements">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.history"></a><a class="link" href="history.html" title="History">History</a>
</h3></div></div></div>
<p>
New issues should be submitted at <a href="https://github.com/boostorg/regex/issues" target="_top">https://github.com/boostorg/regex/issues</a>
</p>
<p>
Currently open issues can be viewed <a href="https://github.com/boostorg/regex/issues?q=is%3Aopen+is%3Aissue" target="_top">here</a>.
</p>
<p>
All issues including closed ones can be viewed <a href="https://github.com/boostorg/regex/issues?q=is%3Aissue+is%3Aclosed" target="_top">here</a>.
</p>
<h5>
<a name="boost_regex.background.history.h0"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_7_0_1_boost_1_79_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_7_0_1_boost_1_79_0">Boost.Regex-7.0.1
(boost-1.79.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Minor fix for setting building with -DBOOST_REGEX_MAX_CACHE_BLOCKS=0
and <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">atomic</span><span class="special">&gt;</span></code> present.
</li></ul></div>
<h5>
<a name="boost_regex.background.history.h1"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_7_0_0_boost_1_78_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_7_0_0_boost_1_78_0">Boost.Regex-7.0.0
(Boost-1.78.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<span class="bold"><strong>Breaking Change:</strong></span> Change \B to be the
opposite of \b as per Perl behaviour.
</li>
<li class="listitem">
Change w32_regex_traits.hpp so that windows.h is no longer included.
</li>
<li class="listitem">
Fxed fuzzing related issues <a href="https://github.com/boostorg/regex/issues/156" target="_top">#151</a>,
<a href="https://github.com/boostorg/regex/issues/156" target="_top">#152</a>,
<a href="https://github.com/boostorg/regex/issues/156" target="_top">#153</a>,
<a href="https://github.com/boostorg/regex/issues/156" target="_top">#156</a>.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h2"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_6_0_0_boost_1_77_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_6_0_0_boost_1_77_0">Boost.Regex-6.0.0
(Boost-1.77.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Big change to header only library.
</li>
<li class="listitem">
Deprecate C++03 support.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h3"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_5_1_4_boost_172_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_5_1_4_boost_172_0">Boost.Regex-5.1.4
(Boost-172.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Minor build fixes, see <a href="https://github.com/boostorg/regex/issues/89" target="_top">#89</a>.
</li></ul></div>
<h5>
<a name="boost_regex.background.history.h4"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_5_1_3_boost_1_64_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_5_1_3_boost_1_64_0">Boost.Regex-5.1.3
(Boost-1.64.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Compiling with Oracle C++ toolset is no longer restricted to static linking.
</li>
<li class="listitem">
Big effort to de-fuzz the library using libFuzzer and fix identified
issues, see: <a href="https://svn.boost.org/trac/boost/ticket/12818" target="_top">#12818</a>.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h5"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_5_1_2_boost_1_62_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_5_1_2_boost_1_62_0">Boost.Regex-5.1.2
(Boost-1.62.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fix buffer over-run error when parsing certain invalid regexes, see
<a href="https://svn.boost.org/trac/boost/ticket/12222" target="_top">#12222</a>.
</li>
<li class="listitem">
Fix detection of ICU in library build, see <a href="https://svn.boost.org/trac/boost/ticket/12152" target="_top">#12152</a>.
</li>
<li class="listitem">
Fix bug in case sensitivity change, see <a href="https://svn.boost.org/trac/boost/ticket/11940" target="_top">#11940</a>.
</li>
<li class="listitem">
Allow types wider than int in <code class="computeroutput"><span class="special">\</span><span class="identifier">x</span><span class="special">{}</span></code>
expressions (for char32_t etc), see <a href="https://svn.boost.org/trac/boost/ticket/11988" target="_top">#11988</a>.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h6"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_5_1_1_boost_1_61_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_5_1_1_boost_1_61_0">Boost.Regex-5.1.1
(Boost-1.61.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Change to lockfree implementation of memory cache, see <a href="https://github.com/boostorg/regex/pull/23" target="_top">PR#23</a>.
</li></ul></div>
<h5>
<a name="boost_regex.background.history.h7"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_5_1_0_boost_1_60_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_5_1_0_boost_1_60_0">Boost.Regex-5.1.0
(Boost-1.60.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Add support for Perl's backtracking control verbs, see <a href="https://svn.boost.org/trac/boost/ticket/11205" target="_top">#11205</a>.
Note however, that (*MARK) and operations on marks are not currently
supported.
</li>
<li class="listitem">
Fix incorrect range end when matching [[:unicode:]], see <a href="https://svn.boost.org/trac/boost/ticket/11524" target="_top">#11524</a>.
</li>
<li class="listitem">
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 <a href="https://svn.boost.org/trac/boost/ticket/11472" target="_top">#11472</a>.
</li>
<li class="listitem">
Make sub_match a valid C++ range type, see <a href="https://svn.boost.org/trac/boost/ticket/11036" target="_top">#11036</a>.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h8"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_5_0_1_boost_1_58_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_5_0_1_boost_1_58_0">Boost.Regex-5.0.1
(Boost-1.58.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fixed some typos as in <a href="https://svn.boost.org/trac/boost/ticket/10682" target="_top">#10682</a>.
</li>
<li class="listitem">
Merged <a href="https://github.com/boostorg/regex/pull/6" target="_top">pull-request
#6</a> for Coverity warnings.
</li>
<li class="listitem">
Merged <a href="https://github.com/boostorg/regex/pull/7" target="_top">pull-request
#7</a> for Coverity warnings.
</li>
<li class="listitem">
Merged <a href="https://github.com/boostorg/regex/pull/8" target="_top">pull-request
#8</a> for Coverity warnings.
</li>
<li class="listitem">
Merged <a href="https://github.com/boostorg/regex/pull/10" target="_top">pull-request
#10</a> to enable more build variants when linking to ICU.
</li>
<li class="listitem">
Fix issue with ICU and partial matches, see <a href="https://svn.boost.org/trac/boost/ticket/10114" target="_top">#10114</a>.
</li>
<li class="listitem">
Removed delayload support for the ICU libraries: this doesn't work with
the latest ICU releases (linker errors).
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h9"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_regex_5_0_0_boost_1_56_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_regex_5_0_0_boost_1_56_0">Boost.Regex-5.0.0
(Boost-1.56.0)</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
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.
</li>
<li class="listitem">
<span class="bold"><strong>Breaking change:</strong></span> corrected behavior
of <code class="computeroutput"><span class="identifier">basic_regex</span><span class="special">&lt;&gt;::</span><span class="identifier">mark_count</span><span class="special">()</span></code>
to match existing documentation, <code class="computeroutput"><span class="identifier">basic_regex</span><span class="special">&lt;&gt;::</span><span class="identifier">subexpression</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code> changed to match, see <a href="https://svn.boost.org/trac/boost/ticket/9227" target="_top">#9227</a>
</li>
<li class="listitem">
Fixed issue <a href="https://svn.boost.org/trac/boost/ticket/8903" target="_top">#8903</a>.
</li>
<li class="listitem">
Fixed documentation typos from <a href="https://svn.boost.org/trac/boost/ticket/9283" target="_top">#9283</a>.
</li>
<li class="listitem">
Fixed bug in collation code that failed if the locale generated collation
strings with embedded nul's, see <a href="https://svn.boost.org/trac/boost/ticket/9451" target="_top">#9451</a>.
</li>
<li class="listitem">
Apply patch for unusual thread usage (no statically initialized mutexes),
see <a href="https://svn.boost.org/trac/boost/ticket/9461" target="_top">#9461</a>.
</li>
<li class="listitem">
Added better checks for invalid UTF-8 sequences, see <a href="https://svn.boost.org/trac/boost/ticket/9473" target="_top">#9473</a>.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h10"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_54"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_54">Boost-1.54</a>
</h5>
<p>
Fixed issue <a href="https://svn.boost.org/trac/boost/ticket/8569" target="_top">#8569</a>.
</p>
<h5>
<a name="boost_regex.background.history.h11"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_53"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_53">Boost-1.53</a>
</h5>
<p>
Fixed Issues: <a href="https://svn.boost.org/trac/boost/ticket/7744" target="_top">#7744</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7644" target="_top">#7644</a>.
</p>
<h5>
<a name="boost_regex.background.history.h12"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_51"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_51">Boost-1.51</a>
</h5>
<p>
Fixed issues: <a href="https://svn.boost.org/trac/boost/ticket/589" target="_top">#589</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7084" target="_top">#7084</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7032" target="_top">#7032</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6346" target="_top">#6346</a>.
</p>
<h5>
<a name="boost_regex.background.history.h13"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_50"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_50">Boost-1.50</a>
</h5>
<p>
Fixed issue with <code class="computeroutput"><span class="special">(?!)</span></code> not being
a valid expression, and updated docs on what constitutes a valid conditional
expression.
</p>
<h5>
<a name="boost_regex.background.history.h14"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_48"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_48">Boost-1.48</a>
</h5>
<p>
Fixed issues: <a href="https://svn.boost.org/trac/boost/ticket/688" target="_top">#698</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5835" target="_top">#5835</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5958" target="_top">#5958</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5736" target="_top">#5736</a>.
</p>
<h5>
<a name="boost_regex.background.history.h15"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_47"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_47">Boost
1.47</a>
</h5>
<p>
Fixed issues: <a href="https://svn.boost.org/trac/boost/ticket/5223" target="_top">#5223</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5353" target="_top">#5353</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5363" target="_top">#5363</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5462" target="_top">#5462</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5472" target="_top">#5472</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5504" target="_top">#5504</a>.
</p>
<h5>
<a name="boost_regex.background.history.h16"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_44"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_44">Boost
1.44</a>
</h5>
<p>
Fixed issues: <a href="https://svn.boost.org/trac/boost/ticket/4309" target="_top">#4309</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4215" target="_top">#4215</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4212" target="_top">#4212</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4191" target="_top">#4191</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4132" target="_top">#4132</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4123" target="_top">#4123</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4114" target="_top">#4114</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4036" target="_top">#4036</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4020" target="_top">#4020</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3941" target="_top">#3941</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3902" target="_top">#3902</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3890" target="_top">#3890</a>
</p>
<h5>
<a name="boost_regex.background.history.h17"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_42"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_42">Boost
1.42</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Added support for Functors rather than strings as format expressions.
</li>
<li class="listitem">
Improved error reporting when throwing exceptions to include better more
relevant information.
</li>
<li class="listitem">
Improved performance and reduced stack usage of recursive expressions.
</li>
<li class="listitem">
Fixed tickets <a href="https://svn.boost.org/trac/boost/ticket/2802" target="_top">#2802</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3425" target="_top">#3425</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3507" target="_top">#3507</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3546" target="_top">#3546</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3631" target="_top">#3631</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3632" target="_top">#3632</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3715" target="_top">#3715</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3718" target="_top">#3718</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3763" target="_top">#3763</a>,
<a href="https://svn.boost.org/trac/boost/ticket/3764" target="_top">#3764</a>
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h18"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_40"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_40">Boost
1.40</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Added support for many Perl 5.10 syntax elements including named sub-expressions,
branch resets and recursive regular expressions.
</li></ul></div>
<h5>
<a name="boost_regex.background.history.h19"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_38"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_38">Boost
1.38</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<span class="bold"><strong>Breaking change</strong></span>: 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
<a class="link" href="../ref/syntax_option_type.html" title="syntax_option_type"><code class="computeroutput"><span class="identifier">syntax_option_type</span></code></a>
<span class="emphasis"><em>no_empty_expressions</em></span> is set then the old behaviour
is preserved and empty expressions are prohibited. This is issue <a href="https://svn.boost.org/trac/boost/ticket/1081" target="_top">#1081</a>.
</li>
<li class="listitem">
Added support for Perl style ${n} expressions in format strings (issue
<a href="https://svn.boost.org/trac/boost/ticket/2556" target="_top">#2556</a>).
</li>
<li class="listitem">
Added support for accessing the location of sub-expressions within the
regular expression string (issue <a href="https://svn.boost.org/trac/boost/ticket/2269" target="_top">#2269</a>).
</li>
<li class="listitem">
Fixed compiler compatibility issues <a href="https://svn.boost.org/trac/boost/ticket/2244" target="_top">#2244</a>,
<a href="https://svn.boost.org/trac/boost/ticket/2514" target="_top">#2514</a>,
and <a href="https://svn.boost.org/trac/boost/ticket/2244" target="_top">#2458</a>.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h20"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_34"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_34">Boost
1.34</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fix for non-greedy repeats and partial matches not working correctly
in some cases.
</li>
<li class="listitem">
Fix for non-greedy repeats on VC++ not working in some cases (bug report
1515830).
</li>
<li class="listitem">
Changed match_results::position() to return a valid result when *this
represents a partial match.
</li>
<li class="listitem">
Fixed the grep and egrep options so that the newline character gets treated
the same as |.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h21"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_33_1"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_33_1">Boost
1.33.1</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fixed broken makefiles.
</li>
<li class="listitem">
Fixed configuration setup to allow building with VC7.1 - STLport-4.6.2
when using /Zc:wchar_t.
</li>
<li class="listitem">
Moved declarations class-inline in static_mutex.hpp so that SGI Irix
compiler can cope.
</li>
<li class="listitem">
Added needed standard library #includes to fileiter.hpp, regex_workaround.hpp
and cpp_regex_traits.hpp.
</li>
<li class="listitem">
Fixed a bug where non-greedy repeats could in certain strange circumstances
repeat more times than their maximum value.
</li>
<li class="listitem">
Fixed the value returned by basic_regex&lt;&gt;::empty() from a default
constructed object.
</li>
<li class="listitem">
Changed the definition of regex_error to make it backwards compatible
with Boost-1.32.0.
</li>
<li class="listitem">
Disabled external templates for Intel C++ 8.0 and earlier - otherwise
unresolved references can occur.
</li>
<li class="listitem">
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.
</li>
<li class="listitem">
Initialise all the data members of the unicode_iterators: this keeps
gcc from issuing needless warnings.
</li>
<li class="listitem">
Ported the ICU integration code to VC6 and VC7.
</li>
<li class="listitem">
Ensured code is STLport debug mode clean.
</li>
<li class="listitem">
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).
</li>
<li class="listitem">
Fixed strange bug with non-greedy repeats inside forward lookahead assertions.
</li>
<li class="listitem">
Enabled negated character classes inside character sets.
</li>
<li class="listitem">
Fixed regression so that [a-z-] is a valid expression again.
</li>
<li class="listitem">
Fixed bug that allowed some invalid expressions to be accepted.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h22"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_33_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_33_0">Boost
1.33.0</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Completely rewritten expression parsing code, and traits class support;
now conforms to the standardization proposal.
</li>
<li class="listitem">
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.
</li>
<li class="listitem">
Breaking Change: POSIX-extended and POSIX-basic regular expressions now
enforce the letter of the POSIX standard much more closely than before.
</li>
<li class="listitem">
Added support for (?imsx-imsx) constructs.
</li>
<li class="listitem">
Added support for lookbehind expressions (?&lt;=positive-lookbehind)
and (?&lt;!negative-lookbehind).
</li>
<li class="listitem">
Added support for conditional expressions (?(assertion)true-expression|false-expression).
</li>
<li class="listitem">
Added MFC/ATL string wrappers.
</li>
<li class="listitem">
Added Unicode support; based on ICU.
</li>
<li class="listitem">
Changed newline support to recognise \f as a line separator (all character
types), and \x85 as a line separator for wide characters / Unicode only.
</li>
<li class="listitem">
Added a new format flag format_literal that treats the replace string
as a literal, rather than a Perl or Sed style format string.
</li>
<li class="listitem">
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.
</li>
</ul></div>
<h5>
<a name="boost_regex.background.history.h23"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_32_1"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_32_1">Boost
1.32.1</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Fixed bug in partial matches of bounded repeats of '.'.
</li></ul></div>
<h5>
<a name="boost_regex.background.history.h24"></a>
<span class="phrase"><a name="boost_regex.background.history.boost_1_31_0"></a></span><a class="link" href="history.html#boost_regex.background.history.boost_1_31_0">Boost
1.31.0</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Completely rewritten pattern matching code - it is now up to 10 times
faster than before.
</li>
<li class="listitem">
Reorganized documentation.
</li>
<li class="listitem">
Deprecated all interfaces that are not part of the regular expression
standardization proposal.
</li>
<li class="listitem">
Added regex_iterator and regex_token_iterator .
</li>
<li class="listitem">
Added support for Perl style independent sub-expressions.
</li>
<li class="listitem">
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.
</li>
<li class="listitem">
Added experimental support for extended capture information.
</li>
<li class="listitem">
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.
</li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="acknowledgements.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -1,73 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Performance</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="faq.html" title="FAQ">
<link rel="next" href="performance/section_id1378460593.html" title="Testing simple leftmost-longest matches (platform = linux, compiler = GNU C++ version 6.3.0)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="faq.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="performance/section_id1378460593.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.performance"></a><a class="link" href="performance.html" title="Performance">Performance</a>
</h3></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="performance/section_id1378460593.html">Testing
simple leftmost-longest matches (platform = linux, compiler = GNU C++ version
6.3.0)</a></span></dt>
<dt><span class="section"><a href="performance/section_id1675827111.html">Testing
Perl searches (platform = linux, compiler = GNU C++ version 6.3.0)</a></span></dt>
<dt><span class="section"><a href="performance/section_id3141719723.html">Testing
simple leftmost-longest matches (platform = Windows x64, compiler = Microsoft
Visual C++ version 14.1)</a></span></dt>
<dt><span class="section"><a href="performance/section_id3258595385.html">Testing
leftmost-longest searches (platform = Windows x64, compiler = Microsoft Visual
C++ version 14.1)</a></span></dt>
<dt><span class="section"><a href="performance/section_id3261825021.html">Testing
simple Perl matches (platform = linux, compiler = GNU C++ version 6.3.0)</a></span></dt>
<dt><span class="section"><a href="performance/section_id3752650613.html">Testing
Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version
14.1)</a></span></dt>
<dt><span class="section"><a href="performance/section_id4128344975.html">Testing
simple Perl matches (platform = Windows x64, compiler = Microsoft Visual
C++ version 14.1)</a></span></dt>
<dt><span class="section"><a href="performance/section_id4148872883.html">Testing
leftmost-longest searches (platform = linux, compiler = GNU C++ version 6.3.0)</a></span></dt>
</dl></div>
<p>
The performance of Boost.Regex in both recursive and non-recursive modes
should be broadly comparable to other regular expression libraries: recursive
mode is slightly faster (especially where memory allocation requires thread
synchronisation), but not by much. The following pages compare Boost.Regex
with various other regular expression libraries for the following compilers:
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="faq.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="performance/section_id1378460593.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,404 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing simple leftmost-longest matches (platform = linux, compiler = GNU C++ version 6.3.0)</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../performance.html" title="Performance">
<link rel="prev" href="../performance.html" title="Performance">
<link rel="next" href="section_id1675827111.html" title="Testing Perl searches (platform = linux, compiler = GNU C++ version 6.3.0)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../performance.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id1675827111.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_regex.background.performance.section_id1378460593"></a><a class="link" href="section_id1378460593.html" title="Testing simple leftmost-longest matches (platform = linux, compiler = GNU C++ version 6.3.0)">Testing
simple leftmost-longest matches (platform = linux, compiler = GNU C++ version
6.3.0)</a>
</h4></div></div></div>
<div class="table">
<a name="boost_regex.background.performance.section_id1378460593.table_Testing_simple_leftmost_longest_matches_platform_linux_compiler_GNU_C_version_6_3_0_"></a><p class="title"><b>Table 8. Testing simple leftmost-longest matches (platform = linux, compiler
= GNU C++ version 6.3.0)</b></p>
<div class="table-contents"><table class="table" summary="Testing simple leftmost-longest matches (platform = linux, compiler
= GNU C++ version 6.3.0)">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression<br> Text
</p>
</th>
<th>
<p>
boost 1.65
</p>
</th>
<th>
<p>
std::regex
</p>
</th>
<th>
<p>
POSIX
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="literal">([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}</code><br>
<code class="literal">1234-5678-1234-456</code>
</p>
</td>
<td>
<p>
<span class="green">1.11<br> (669ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (603ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.70<br> (2234ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([0-9]+)(\-| |$)(.*)$</code><br> <code class="literal">100-
this is a line of ftp response which contains a message string</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (781ns)</span>
</p>
</td>
<td>
<p>
<span class="red">4.52<br> (3530ns)</span>
</p>
</td>
<td>
<p>
<span class="red">12.72<br> (9933ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">bob.smith@foo.tv</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (937ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.26<br> (1184ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.06<br> (2864ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">foo12@foo.edu</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (892ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.29<br> (1150ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.95<br> (2628ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">john@johnmaddock.co.uk</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1160ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.31<br> (1517ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.29<br> (3818ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">+3.14159</code>
</p>
</td>
<td>
<p>
<span class="blue">1.58<br> (485ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.48<br> (455ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (307ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">-3.14159</code>
</p>
</td>
<td>
<p>
<span class="blue">1.50<br> (466ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.50<br> (464ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (310ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">123</code>
</p>
</td>
<td>
<p>
<span class="blue">3.10<br> (666ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.57<br> (338ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (215ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code><br>
<code class="literal">12/12/2001</code>
</p>
</td>
<td>
<p>
<span class="blue">2.18<br> (373ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.10<br> (359ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (171ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code><br>
<code class="literal">4/1/2001</code>
</p>
</td>
<td>
<p>
<span class="blue">2.27<br> (363ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.93<br> (309ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (160ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">EH10 2QQ</code>
</p>
</td>
<td>
<p>
<span class="blue">2.90<br> (473ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.19<br> (357ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (163ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">G1 1AA</code>
</p>
</td>
<td>
<p>
<span class="blue">2.56<br> (386ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.83<br> (277ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (151ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">SW1 1ZZ</code>
</p>
</td>
<td>
<p>
<span class="blue">2.46<br> (381ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.14<br> (331ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (155ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">abc</code><br> <code class="literal">abc</code>
</p>
</td>
<td>
<p>
<span class="blue">2.35<br> (324ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.11<br> (153ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (138ns)</span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../performance.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id1675827111.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,451 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing Perl searches (platform = linux, compiler = GNU C++ version 6.3.0)</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../performance.html" title="Performance">
<link rel="prev" href="section_id1378460593.html" title="Testing simple leftmost-longest matches (platform = linux, compiler = GNU C++ version 6.3.0)">
<link rel="next" href="section_id3141719723.html" title="Testing simple leftmost-longest matches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id1378460593.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id3141719723.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_regex.background.performance.section_id1675827111"></a><a class="link" href="section_id1675827111.html" title="Testing Perl searches (platform = linux, compiler = GNU C++ version 6.3.0)">Testing
Perl searches (platform = linux, compiler = GNU C++ version 6.3.0)</a>
</h4></div></div></div>
<div class="table">
<a name="boost_regex.background.performance.section_id1675827111.table_Testing_Perl_searches_platform_linux_compiler_GNU_C_version_6_3_0_"></a><p class="title"><b>Table 9. Testing Perl searches (platform = linux, compiler = GNU C++ version
6.3.0)</b></p>
<div class="table-contents"><table class="table" summary="Testing Perl searches (platform = linux, compiler = GNU C++ version
6.3.0)">
<colgroup>
<col>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression<br> Text
</p>
</th>
<th>
<p>
boost 1.65
</p>
</th>
<th>
<p>
std::regex
</p>
</th>
<th>
<p>
boost::xpressive::cregex
</p>
</th>
<th>
<p>
PCRE-10.21
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;a[^&gt;]+href=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">1.63<br> (28838ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">1.67<br> (29436ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (17678ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;font[^&gt;]+face=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;.*?&lt;/font&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">2.78<br> (19366ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">1.50<br> (10471ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (6963ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;h[12345678][^&gt;]*&gt;.*?&lt;/h[12345678]&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">1.95<br> (17081ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">2.18<br> (19086ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (8745ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;img[^&gt;]+src=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">2.61<br> (18132ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">1.61<br> (11211ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (6952ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;p&gt;.*?&lt;/p&gt;</code><br> In file:
..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">1.69<br> (17517ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">1.51<br> (15645ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (10345ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(\w+)\s*(\([^()]++(?:(?2)[^()]++)*+[^)]*\))\s*(\{[^{}]++((?3)[^{}]++)*+[^}]*+\})</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1500580ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">2.84<br> (4260530ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(^[ \t]*#(?:(?&gt;[^\\\n]+)|\\(?&gt;\s*\n|.))*)|</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.64<br> (14163004ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (8632111ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.03<br> (8907897ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?(class|struct)[[:space:]]*(\w+([
]*\([^)]*\))?[\u0 ...</code><br> In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.72<br> (13046296ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.61<br> (27370747ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (7585304ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.98<br> (14992880ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">Beman|John|Dave</code><br> In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (5021ns)</span>
</p>
</td>
<td>
<p>
<span class="red">36.75<br> (184532ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.40<br> (7046ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.19<br> (5966ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">\w+\s*(\([^()]++(?:(?1)[^()]++)*+[^)]*\))</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1551419ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">1.58<br> (2444759ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">\{[^{}]++((?0)[^{}]++)*+[^}]*+\}</code><br> In
file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.31<br> (200846ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (153117ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[ ]*#[ ]*include[ ]+("[^"]+"|&lt;[^&gt;]+&gt;)</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.46<br> (234901ns)</span>
</p>
</td>
<td>
<p>
<span class="red">11.35<br> (1821532ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (160446ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.35<br> (215802ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[ ]*#[ ]*include[ ]+("boost/[^"]+"|&lt;boost/[^&gt;]+&gt;)</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.41<br> (234377ns)</span>
</p>
</td>
<td>
<p>
<span class="red">11.47<br> (1903901ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (165921ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.31<br> (217806ns)</span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id1378460593.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id3141719723.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,328 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing simple leftmost-longest matches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../performance.html" title="Performance">
<link rel="prev" href="section_id1675827111.html" title="Testing Perl searches (platform = linux, compiler = GNU C++ version 6.3.0)">
<link rel="next" href="section_id3258595385.html" title="Testing leftmost-longest searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id1675827111.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id3258595385.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_regex.background.performance.section_id3141719723"></a><a class="link" href="section_id3141719723.html" title="Testing simple leftmost-longest matches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">Testing
simple leftmost-longest matches (platform = Windows x64, compiler = Microsoft
Visual C++ version 14.1)</a>
</h4></div></div></div>
<div class="table">
<a name="boost_regex.background.performance.section_id3141719723.table_Testing_simple_leftmost_longest_matches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_1_"></a><p class="title"><b>Table 10. Testing simple leftmost-longest matches (platform = Windows x64,
compiler = Microsoft Visual C++ version 14.1)</b></p>
<div class="table-contents"><table class="table" summary="Testing simple leftmost-longest matches (platform = Windows x64,
compiler = Microsoft Visual C++ version 14.1)">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression<br> Text
</p>
</th>
<th>
<p>
boost 1.65
</p>
</th>
<th>
<p>
std::regex
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="literal">([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}</code><br>
<code class="literal">1234-5678-1234-456</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (554ns)</span>
</p>
</td>
<td>
<p>
<span class="red">11.06<br> (6127ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([0-9]+)(\-| |$)(.*)$</code><br> <code class="literal">100-
this is a line of ftp response which contains a message string</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (679ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">bob.smith@foo.tv</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1444ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">foo12@foo.edu</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1397ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">john@johnmaddock.co.uk</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1588ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">+3.14159</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (466ns)</span>
</p>
</td>
<td>
<p>
<span class="red">11.18<br> (5208ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">-3.14159</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (519ns)</span>
</p>
</td>
<td>
<p>
<span class="red">9.79<br> (5083ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">123</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (619ns)</span>
</p>
</td>
<td>
<p>
<span class="red">7.64<br> (4730ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code><br>
<code class="literal">12/12/2001</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (449ns)</span>
</p>
</td>
<td>
<p>
<span class="red">5.23<br> (2347ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code><br>
<code class="literal">4/1/2001</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (362ns)</span>
</p>
</td>
<td>
<p>
<span class="red">6.48<br> (2344ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">EH10 2QQ</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1090ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.48<br> (2699ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">G1 1AA</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (348ns)</span>
</p>
</td>
<td>
<p>
<span class="red">6.57<br> (2288ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">SW1 1ZZ</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (358ns)</span>
</p>
</td>
<td>
<p>
<span class="red">6.41<br> (2296ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">abc</code><br> <code class="literal">abc</code>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (375ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.30<br> (864ns)</span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id1675827111.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id3258595385.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,130 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing leftmost-longest searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../performance.html" title="Performance">
<link rel="prev" href="section_id3141719723.html" title="Testing simple leftmost-longest matches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">
<link rel="next" href="section_id3261825021.html" title="Testing simple Perl matches (platform = linux, compiler = GNU C++ version 6.3.0)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id3141719723.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id3261825021.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_regex.background.performance.section_id3258595385"></a><a class="link" href="section_id3258595385.html" title="Testing leftmost-longest searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">Testing
leftmost-longest searches (platform = Windows x64, compiler = Microsoft Visual
C++ version 14.1)</a>
</h4></div></div></div>
<div class="table">
<a name="boost_regex.background.performance.section_id3258595385.table_Testing_leftmost_longest_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_1_"></a><p class="title"><b>Table 11. Testing leftmost-longest searches (platform = Windows x64, compiler
= Microsoft Visual C++ version 14.1)</b></p>
<div class="table-contents"><table class="table" summary="Testing leftmost-longest searches (platform = Windows x64, compiler
= Microsoft Visual C++ version 14.1)">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression<br> Text
</p>
</th>
<th>
<p>
boost 1.65
</p>
</th>
<th>
<p>
std::regex
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="literal">&lt;a[^&gt;]+href=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (80801ns)</span>
</p>
</td>
<td>
<p>
<span class="red">6.82<br> (551022ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">&lt;img[^&gt;]+src=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (19868ns)</span>
</p>
</td>
<td>
<p>
<span class="red">4.23<br> (84068ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">Beman|John|Dave</code><br> In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (10508ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.37<br> (35378ns)</span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id3141719723.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id3261825021.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,479 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing simple Perl matches (platform = linux, compiler = GNU C++ version 6.3.0)</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../performance.html" title="Performance">
<link rel="prev" href="section_id3258595385.html" title="Testing leftmost-longest searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">
<link rel="next" href="section_id3752650613.html" title="Testing Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id3258595385.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id3752650613.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_regex.background.performance.section_id3261825021"></a><a class="link" href="section_id3261825021.html" title="Testing simple Perl matches (platform = linux, compiler = GNU C++ version 6.3.0)">Testing
simple Perl matches (platform = linux, compiler = GNU C++ version 6.3.0)</a>
</h4></div></div></div>
<div class="table">
<a name="boost_regex.background.performance.section_id3261825021.table_Testing_simple_Perl_matches_platform_linux_compiler_GNU_C_version_6_3_0_"></a><p class="title"><b>Table 12. Testing simple Perl matches (platform = linux, compiler = GNU C++
version 6.3.0)</b></p>
<div class="table-contents"><table class="table" summary="Testing simple Perl matches (platform = linux, compiler = GNU C++
version 6.3.0)">
<colgroup>
<col>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression<br> Text
</p>
</th>
<th>
<p>
boost 1.65
</p>
</th>
<th>
<p>
std::regex
</p>
</th>
<th>
<p>
boost::xpressive::cregex
</p>
</th>
<th>
<p>
PCRE-10.21
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="literal">([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}</code><br>
<code class="literal">1234-5678-1234-456</code>
</p>
</td>
<td>
<p>
<span class="blue">2.65<br> (506ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.86<br> (546ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (191ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.37<br> (262ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([0-9]+)(\-| |$)(.*)$</code><br> <code class="literal">100-
this is a line of ftp response which contains a message string</code>
</p>
</td>
<td>
<p>
<span class="blue">2.52<br> (353ns)</span>
</p>
</td>
<td>
<p>
<span class="red">20.99<br> (2939ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (140ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.50<br> (490ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">bob.smith@foo.tv</code>
</p>
</td>
<td>
<p>
<span class="blue">1.98<br> (681ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (344ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.32<br> (454ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">foo12@foo.edu</code>
</p>
</td>
<td>
<p>
<span class="blue">2.06<br> (695ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (337ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.34<br> (451ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">john@johnmaddock.co.uk</code>
</p>
</td>
<td>
<p>
<span class="blue">1.93<br> (821ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (425ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.24<br> (526ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">+3.14159</code>
</p>
</td>
<td>
<p>
<span class="blue">2.34<br> (243ns)</span>
</p>
</td>
<td>
<p>
<span class="red">4.45<br> (463ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (104ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.62<br> (168ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">-3.14159</code>
</p>
</td>
<td>
<p>
<span class="blue">2.33<br> (245ns)</span>
</p>
</td>
<td>
<p>
<span class="red">4.39<br> (461ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (105ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.60<br> (168ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">123</code>
</p>
</td>
<td>
<p>
<span class="blue">2.08<br> (208ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.31<br> (331ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (100ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.52<br> (152ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code><br>
<code class="literal">12/12/2001</code>
</p>
</td>
<td>
<p>
<span class="blue">2.28<br> (237ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.39<br> (353ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (104ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.18<br> (123ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code><br>
<code class="literal">4/1/2001</code>
</p>
</td>
<td>
<p>
<span class="blue">2.12<br> (216ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">3.02<br> (308ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (102ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.19<br> (121ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">EH10 2QQ</code>
</p>
</td>
<td>
<p>
<span class="blue">2.12<br> (257ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.66<br> (322ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (121ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.17<br> (142ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">G1 1AA</code>
</p>
</td>
<td>
<p>
<span class="blue">2.00<br> (230ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.65<br> (305ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (115ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.22<br> (140ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">SW1 1ZZ</code>
</p>
</td>
<td>
<p>
<span class="blue">2.05<br> (244ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.81<br> (334ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (119ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.22<br> (145ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">abc</code><br> <code class="literal">abc</code>
</p>
</td>
<td>
<p>
<span class="blue">1.65<br> (135ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.83<br> (150ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (82ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.02<br> (84ns)</span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id3258595385.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id3752650613.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,523 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../performance.html" title="Performance">
<link rel="prev" href="section_id3261825021.html" title="Testing simple Perl matches (platform = linux, compiler = GNU C++ version 6.3.0)">
<link rel="next" href="section_id4128344975.html" title="Testing simple Perl matches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id3261825021.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id4128344975.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_regex.background.performance.section_id3752650613"></a><a class="link" href="section_id3752650613.html" title="Testing Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">Testing
Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version
14.1)</a>
</h4></div></div></div>
<div class="table">
<a name="boost_regex.background.performance.section_id3752650613.table_Testing_Perl_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_1_"></a><p class="title"><b>Table 13. Testing Perl searches (platform = Windows x64, compiler = Microsoft
Visual C++ version 14.1)</b></p>
<div class="table-contents"><table class="table" summary="Testing Perl searches (platform = Windows x64, compiler = Microsoft
Visual C++ version 14.1)">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression<br> Text
</p>
</th>
<th>
<p>
boost 1.65
</p>
</th>
<th>
<p>
PCRE-10.10
</p>
</th>
<th>
<p>
RE2
</p>
</th>
<th>
<p>
std::regex
</p>
</th>
<th>
<p>
boost::xpressive::cregex
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;a[^&gt;]+href=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">1.36<br> (21565ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (15821ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.08<br> (17111ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">2.89<br> (45731ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;font[^&gt;]+face=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;.*?&lt;/font&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">3.05<br> (16442ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.58<br> (8492ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (5385ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">3.31<br> (17804ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;h[12345678][^&gt;]*&gt;.*?&lt;/h[12345678]&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">2.11<br> (15434ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.31<br> (9615ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (7315ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="red">4.28<br> (31331ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;img[^&gt;]+src=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">2.73<br> (16457ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.41<br> (8503ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (6023ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">3.14<br> (18913ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(?i)&lt;p&gt;.*?&lt;/p&gt;</code><br> In file:
..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">2.32<br> (15717ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.57<br> (10652ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (6789ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">3.76<br> (25542ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(\w+)\s*(\([^()]++(?:(?2)[^()]++)*+[^)]*\))\s*(\{[^{}]++((?3)[^{}]++)*+[^}]*+\})</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1125008ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.90<br> (3265708ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(^[ \t]*#(?:(?&gt;[^\\\n]+)|\\(?&gt;\s*\n|.))*)|</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.55<br> (11035845ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (7123895ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="blue">1.46<br> (10415180ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">(template[[:space:]]*&lt;[^;:{]+&gt;[[:space:]]*)?(class|struct)[[:space:]]*(\w+([
]*\([^)]*\))?[\u0 ...</code><br> In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="red">26.17<br> (8436744ns)</span>
</p>
</td>
<td>
<p>
<span class="red">32.97<br> (10629852ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (322399ns)</span>
</p>
</td>
<td>
<p>
<span class="red">811.84<br> (261737971ns)</span>
</p>
</td>
<td>
<p>
<span class="red">23.34<br> (7526351ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">Beman|John|Dave</code><br> In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="blue">1.58<br> (10246ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (6487ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.48<br> (16109ns)</span>
</p>
</td>
<td>
<p>
<span class="red">5.39<br> (34994ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.09<br> (7046ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">\w+\s*(\([^()]++(?:(?1)[^()]++)*+[^)]*\))</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (1152646ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.70<br> (1962067ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">\{[^{}]++((?0)[^{}]++)*+[^}]*+\}</code><br> In
file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.62<br> (255439ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (158034ns)</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
<td>
<p>
<span class="grey">-</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[ ]*#[ ]*include[ ]+("[^"]+"|&lt;[^&gt;]+&gt;)</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.48<br> (268270ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.08<br> (195553ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.78<br> (323879ns)</span>
</p>
</td>
<td>
<p>
<span class="red">7.75<br> (1406976ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (181554ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[ ]*#[ ]*include[ ]+("boost/[^"]+"|&lt;boost/[^&gt;]+&gt;)</code><br>
In file: boost/multiprecision/number.hpp
</p>
</td>
<td>
<p>
<span class="blue">1.48<br> (268560ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.08<br> (195915ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.76<br> (319886ns)</span>
</p>
</td>
<td>
<p>
<span class="red">7.72<br> (1398962ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (181328ns)</span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id3261825021.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id4128344975.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,556 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing simple Perl matches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../performance.html" title="Performance">
<link rel="prev" href="section_id3752650613.html" title="Testing Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">
<link rel="next" href="section_id4148872883.html" title="Testing leftmost-longest searches (platform = linux, compiler = GNU C++ version 6.3.0)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id3752650613.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id4148872883.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_regex.background.performance.section_id4128344975"></a><a class="link" href="section_id4128344975.html" title="Testing simple Perl matches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">Testing
simple Perl matches (platform = Windows x64, compiler = Microsoft Visual
C++ version 14.1)</a>
</h4></div></div></div>
<div class="table">
<a name="boost_regex.background.performance.section_id4128344975.table_Testing_simple_Perl_matches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_1_"></a><p class="title"><b>Table 14. Testing simple Perl matches (platform = Windows x64, compiler =
Microsoft Visual C++ version 14.1)</b></p>
<div class="table-contents"><table class="table" summary="Testing simple Perl matches (platform = Windows x64, compiler =
Microsoft Visual C++ version 14.1)">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression<br> Text
</p>
</th>
<th>
<p>
boost 1.65
</p>
</th>
<th>
<p>
PCRE-10.10
</p>
</th>
<th>
<p>
RE2
</p>
</th>
<th>
<p>
std::regex
</p>
</th>
<th>
<p>
boost::xpressive::cregex
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="literal">([[:digit:]]{4}[- ]){3}[[:digit:]]{3,4}</code><br>
<code class="literal">1234-5678-1234-456</code>
</p>
</td>
<td>
<p>
<span class="blue">1.90<br> (328ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.18<br> (205ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (173ns)</span>
</p>
</td>
<td>
<p>
<span class="red">27.81<br> (4811ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.32<br> (228ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([0-9]+)(\-| |$)(.*)$</code><br> <code class="literal">100-
this is a line of ftp response which contains a message string</code>
</p>
</td>
<td>
<p>
<span class="blue">1.45<br> (251ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.73<br> (300ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.14<br> (371ns)</span>
</p>
</td>
<td>
<p>
<span class="red">24.75<br> (4281ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (173ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">bob.smith@foo.tv</code>
</p>
</td>
<td>
<p>
<span class="blue">2.53<br> (403ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.13<br> (338ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (159ns)</span>
</p>
</td>
<td>
<p>
<span class="red">34.16<br> (5432ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.86<br> (295ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">foo12@foo.edu</code>
</p>
</td>
<td>
<p>
<span class="blue">2.75<br> (402ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.34<br> (342ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (146ns)</span>
</p>
</td>
<td>
<p>
<span class="red">40.78<br> (5954ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.01<br> (294ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\
...</code><br> <code class="literal">john@johnmaddock.co.uk</code>
</p>
</td>
<td>
<p>
<span class="blue">2.54<br> (469ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.16<br> (399ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (185ns)</span>
</p>
</td>
<td>
<p>
<span class="red">44.27<br> (8190ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">2.04<br> (377ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">+3.14159</code>
</p>
</td>
<td>
<p>
<span class="blue">1.53<br> (171ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.14<br> (128ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.11<br> (124ns)</span>
</p>
</td>
<td>
<p>
<span class="red">21.63<br> (2422ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (112ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">-3.14159</code>
</p>
</td>
<td>
<p>
<span class="blue">1.50<br> (167ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.15<br> (128ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.13<br> (125ns)</span>
</p>
</td>
<td>
<p>
<span class="red">21.92<br> (2433ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (111ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[-+]?[[:digit:]]*\.?[[:digit:]]*$</code><br>
<code class="literal">123</code>
</p>
</td>
<td>
<p>
<span class="blue">1.40<br> (143ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.15<br> (117ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.03<br> (105ns)</span>
</p>
</td>
<td>
<p>
<span class="red">35.65<br> (3636ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (102ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code><br>
<code class="literal">12/12/2001</code>
</p>
</td>
<td>
<p>
<span class="blue">1.47<br> (157ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (107ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.27<br> (136ns)</span>
</p>
</td>
<td>
<p>
<span class="red">16.75<br> (1792ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.03<br> (110ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[[:digit:]]{1,2}/[[:digit:]]{1,2}/[[:digit:]]{4}$</code><br>
<code class="literal">4/1/2001</code>
</p>
</td>
<td>
<p>
<span class="blue">1.39<br> (145ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (104ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.13<br> (117ns)</span>
</p>
</td>
<td>
<p>
<span class="red">16.90<br> (1758ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.07<br> (111ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">EH10 2QQ</code>
</p>
</td>
<td>
<p>
<span class="blue">1.44<br> (164ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (114ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.10<br> (125ns)</span>
</p>
</td>
<td>
<p>
<span class="red">15.61<br> (1779ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.06<br> (121ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">G1 1AA</code>
</p>
</td>
<td>
<p>
<span class="blue">1.36<br> (152ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (112ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.04<br> (117ns)</span>
</p>
</td>
<td>
<p>
<span class="red">15.86<br> (1776ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.05<br> (118ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$</code><br>
<code class="literal">SW1 1ZZ</code>
</p>
</td>
<td>
<p>
<span class="blue">1.40<br> (158ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (113ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.10<br> (124ns)</span>
</p>
</td>
<td>
<p>
<span class="red">15.86<br> (1792ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.07<br> (121ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">abc</code><br> <code class="literal">abc</code>
</p>
</td>
<td>
<p>
<span class="blue">2.01<br> (141ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (70ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.17<br> (82ns)</span>
</p>
</td>
<td>
<p>
<span class="red">8.24<br> (577ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.19<br> (83ns)</span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id3752650613.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="section_id4148872883.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,150 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testing leftmost-longest searches (platform = linux, compiler = GNU C++ version 6.3.0)</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../performance.html" title="Performance">
<link rel="prev" href="section_id4128344975.html" title="Testing simple Perl matches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.1)">
<link rel="next" href="../standards.html" title="Standards Conformance">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id4128344975.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../standards.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_regex.background.performance.section_id4148872883"></a><a class="link" href="section_id4148872883.html" title="Testing leftmost-longest searches (platform = linux, compiler = GNU C++ version 6.3.0)">Testing
leftmost-longest searches (platform = linux, compiler = GNU C++ version 6.3.0)</a>
</h4></div></div></div>
<div class="table">
<a name="boost_regex.background.performance.section_id4148872883.table_Testing_leftmost_longest_searches_platform_linux_compiler_GNU_C_version_6_3_0_"></a><p class="title"><b>Table 15. Testing leftmost-longest searches (platform = linux, compiler =
GNU C++ version 6.3.0)</b></p>
<div class="table-contents"><table class="table" summary="Testing leftmost-longest searches (platform = linux, compiler =
GNU C++ version 6.3.0)">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression<br> Text
</p>
</th>
<th>
<p>
boost 1.65
</p>
</th>
<th>
<p>
std::regex
</p>
</th>
<th>
<p>
POSIX
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="literal">&lt;a[^&gt;]+href=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (107026ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.44<br> (154551ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.64<br> (175184ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">&lt;img[^&gt;]+src=("[^"]*"|[^[:space:]]+)[^&gt;]*&gt;</code><br>
In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (15420ns)</span>
</p>
</td>
<td>
<p>
<span class="red">6.89<br> (106275ns)</span>
</p>
</td>
<td>
<p>
<span class="blue">1.59<br> (24567ns)</span>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="literal">Beman|John|Dave</code><br> In file: ..<span class="emphasis"><em>..</em></span>../libs/libraries.htm
</p>
</td>
<td>
<p>
<span class="green">1.03<br> (5399ns)</span>
</p>
</td>
<td>
<p>
<span class="red">36.27<br> (190577ns)</span>
</p>
</td>
<td>
<p>
<span class="green">1.00<br> (5254ns)</span>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break">
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="section_id4128344975.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../standards.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,61 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Redistributables</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="standards.html" title="Standards Conformance">
<link rel="next" href="acknowledgements.html" title="Acknowledgements">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="standards.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.redist"></a><a class="link" href="redist.html" title="Redistributables">Redistributables</a>
</h3></div></div></div>
<p>
If you are using Microsoft or Borland C++ and link to a dll version of the
run time library, then you can choose to also link to a dll version of Boost.Regex
by defining the symbol BOOST_REGEX_DYN_LINK when you compile your code. While
these dll's are redistributable, there are no "standard" versions,
so when installing on the users PC, you should place these in a directory
private to your application, and not in the PC's directory path. Note that
if you link to a static version of your run time library, then you will also
link to a static version of Boost.Regex and no dll's will need to be distributed.
The possible Boost.Regex dll and library names are computed according to
the formula given in <a href="../../../../../../more/getting_started.html" target="_top">the
getting started guide</a>.
</p>
<p>
Note: you can disable automatic library selection by defining the symbol
BOOST_REGEX_NO_LIB when compiling, this is useful if you want to build Boost.Regex
yourself in your IDE, or if you need to debug Boost.Regex.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="standards.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,573 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Standards Conformance</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="performance/section_id4148872883.html" title="Testing leftmost-longest searches (platform = linux, compiler = GNU C++ version 6.3.0)">
<link rel="next" href="redist.html" title="Redistributables">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="performance/section_id4148872883.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="redist.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.standards"></a><a class="link" href="standards.html" title="Standards Conformance">Standards Conformance</a>
</h3></div></div></div>
<h5>
<a name="boost_regex.background.standards.h0"></a>
<span class="phrase"><a name="boost_regex.background.standards.c"></a></span><a class="link" href="standards.html#boost_regex.background.standards.c">C++</a>
</h5>
<p>
Boost.Regex is intended to conform to the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
Report on C++ Library Extensions</a>.
</p>
<h5>
<a name="boost_regex.background.standards.h1"></a>
<span class="phrase"><a name="boost_regex.background.standards.ecmascript_javascript"></a></span><a class="link" href="standards.html#boost_regex.background.standards.ecmascript_javascript">ECMAScript
/ JavaScript</a>
</h5>
<p>
All of the ECMAScript regular expression syntax features are supported, except
that:
</p>
<p>
The escape sequence \u matches any upper case character (the same as [[:upper:]])
rather than a Unicode escape sequence; use \x{DDDD} for Unicode escape sequences.
</p>
<h5>
<a name="boost_regex.background.standards.h2"></a>
<span class="phrase"><a name="boost_regex.background.standards.perl"></a></span><a class="link" href="standards.html#boost_regex.background.standards.perl">Perl</a>
</h5>
<p>
Almost all Perl features are supported, except for:
</p>
<p>
(?{code}) Not implementable in a compiled strongly typed language.
</p>
<p>
(??{code}) Not implementable in a compiled strongly typed language.
</p>
<p>
(*VERB) The <a href="http://perldoc.perl.org/perlre.html#Special-Backtracking-Control-Verbs" target="_top">backtracking
control verbs</a> are not recognised or implemented at this time.
</p>
<p>
In addition the following features behave slightly differently from Perl:
</p>
<p>
^ $ \Z These recognise any line termination sequence, and not just \n: see
the Unicode requirements below.
</p>
<h5>
<a name="boost_regex.background.standards.h3"></a>
<span class="phrase"><a name="boost_regex.background.standards.posix"></a></span><a class="link" href="standards.html#boost_regex.background.standards.posix">POSIX</a>
</h5>
<p>
All the POSIX basic and extended regular expression features are supported,
except that:
</p>
<p>
No character collating names are recognized except those specified in the
POSIX standard for the C locale, unless they are explicitly registered with
the traits class.
</p>
<p>
Character equivalence classes ( [[=a=]] etc) are probably buggy except on
Win32. Implementing this feature requires knowledge of the format of the
string sort keys produced by the system; if you need this, and the default
implementation doesn't work on your platform, then you will need to supply
a custom traits class.
</p>
<h5>
<a name="boost_regex.background.standards.h4"></a>
<span class="phrase"><a name="boost_regex.background.standards.unicode"></a></span><a class="link" href="standards.html#boost_regex.background.standards.unicode">Unicode</a>
</h5>
<p>
The following comments refer to <a href="http://unicode.org/reports/tr18/" target="_top">Unicode
Technical Standard #18: Unicode Regular Expressions version 11</a>.
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Item
</p>
</th>
<th>
<p>
Feature
</p>
</th>
<th>
<p>
Support
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
1.1
</p>
</td>
<td>
<p>
Hex Notation
</p>
</td>
<td>
<p>
Yes: use \x{DDDD} to refer to code point UDDDD.
</p>
</td>
</tr>
<tr>
<td>
<p>
1.2
</p>
</td>
<td>
<p>
Character Properties
</p>
</td>
<td>
<p>
All the names listed under the General Category Property are supported.
Script names and Other Names are not currently supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
1.3
</p>
</td>
<td>
<p>
Subtraction and Intersection
</p>
</td>
<td>
<p>
Indirectly support by forward-lookahead:
</p>
<p>
<code class="computeroutput"><span class="special">(?=[[:</span><span class="identifier">X</span><span class="special">:]])[[:</span><span class="identifier">Y</span><span class="special">:]]</span></code>
</p>
<p>
Gives the intersection of character properties X and Y.
</p>
<p>
<code class="computeroutput"><span class="special">(?![[:</span><span class="identifier">X</span><span class="special">:]])[[:</span><span class="identifier">Y</span><span class="special">:]]</span></code>
</p>
<p>
Gives everything in Y that is not in X (subtraction).
</p>
</td>
</tr>
<tr>
<td>
<p>
1.4
</p>
</td>
<td>
<p>
Simple Word Boundaries
</p>
</td>
<td>
<p>
Conforming: non-spacing marks are included in the set of word characters.
</p>
</td>
</tr>
<tr>
<td>
<p>
1.5
</p>
</td>
<td>
<p>
Caseless Matching
</p>
</td>
<td>
<p>
Supported, note that at this level, case transformations are 1:1,
many to many case folding operations are not supported (for example
"ß" to "SS").
</p>
</td>
</tr>
<tr>
<td>
<p>
1.6
</p>
</td>
<td>
<p>
Line Boundaries
</p>
</td>
<td>
<p>
Supported, except that "." matches only one character
of "\r\n". Other than that word boundaries match correctly;
including not matching in the middle of a "\r\n" sequence.
</p>
</td>
</tr>
<tr>
<td>
<p>
1.7
</p>
</td>
<td>
<p>
Code Points
</p>
</td>
<td>
<p>
Supported: provided you use the u32* algorithms, then UTF-8, UTF-16
and UTF-32 are all treated as sequences of 32-bit code points.
</p>
</td>
</tr>
<tr>
<td>
<p>
2.1
</p>
</td>
<td>
<p>
Canonical Equivalence
</p>
</td>
<td>
<p>
Not supported: it is up to the user of the library to convert all
text into the same canonical form as the regular expression.
</p>
</td>
</tr>
<tr>
<td>
<p>
2.2
</p>
</td>
<td>
<p>
Default Grapheme Clusters
</p>
</td>
<td>
<p>
Not supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
2.3Default Word Boundaries
</p>
</td>
<td>
<p>
Not supported.
</p>
</td>
<td class="auto-generated"> </td>
</tr>
<tr>
<td>
<p>
2.4
</p>
</td>
<td>
<p>
Default Loose Matches
</p>
</td>
<td>
<p>
Not Supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
2.5
</p>
</td>
<td>
<p>
Named Properties
</p>
</td>
<td>
<p>
Supported: the expression "[[:name:]]" or \N{name} matches
the named character "name".
</p>
</td>
</tr>
<tr>
<td>
<p>
2.6
</p>
</td>
<td>
<p>
Wildcard properties
</p>
</td>
<td>
<p>
Not Supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.1
</p>
</td>
<td>
<p>
Tailored Punctuation.
</p>
</td>
<td>
<p>
Not Supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.2
</p>
</td>
<td>
<p>
Tailored Grapheme Clusters
</p>
</td>
<td>
<p>
Not Supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.3
</p>
</td>
<td>
<p>
Tailored Word Boundaries.
</p>
</td>
<td>
<p>
Not Supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.4
</p>
</td>
<td>
<p>
Tailored Loose Matches
</p>
</td>
<td>
<p>
Partial support: [[=c=]] matches characters with the same primary
equivalence class as "c".
</p>
</td>
</tr>
<tr>
<td>
<p>
3.5
</p>
</td>
<td>
<p>
Tailored Ranges
</p>
</td>
<td>
<p>
Supported: [a-b] matches any character that collates in the range
a to b, when the expression is constructed with the collate flag
set.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.6
</p>
</td>
<td>
<p>
Context Matches
</p>
</td>
<td>
<p>
Not Supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.7
</p>
</td>
<td>
<p>
Incremental Matches
</p>
</td>
<td>
<p>
Supported: pass the flag <code class="computeroutput"><span class="identifier">match_partial</span></code>
to the regex algorithms.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.8
</p>
</td>
<td>
<p>
Unicode Set Sharing
</p>
</td>
<td>
<p>
Not Supported.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.9
</p>
</td>
<td>
<p>
Possible Match Sets
</p>
</td>
<td>
<p>
Not supported, however this information is used internally to optimise
the matching of regular expressions, and return quickly if no match
is possible.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.10
</p>
</td>
<td>
<p>
Folded Matching
</p>
</td>
<td>
<p>
Partial Support: It is possible to achieve a similar effect by
using a custom regular expression traits class.
</p>
</td>
</tr>
<tr>
<td>
<p>
3.11
</p>
</td>
<td>
<p>
Custom Submatch Evaluation
</p>
</td>
<td>
<p>
Not Supported.
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="performance/section_id4148872883.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="redist.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
@@ -1,84 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Thread Safety</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../background.html" title="Background Information">
<link rel="prev" href="locale.html" title="Localization">
<link rel="next" href="examples.html" title="Test and Example Programs">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="locale.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_regex.background.thread_safety"></a><a class="link" href="thread_safety.html" title="Thread Safety">Thread Safety</a>
</h3></div></div></div>
<p>
The Boost.Regex library is thread safe when Boost is: you can verify that
Boost is in thread safe mode by checking to see if <code class="computeroutput"><span class="identifier">BOOST_HAS_THREADS</span></code>
is defined: this macro is set automatically by the config system when threading
support is turned on in your compiler.
</p>
<p>
Class <a class="link" href="../ref/basic_regex.html" title="basic_regex"><code class="computeroutput"><span class="identifier">basic_regex</span></code></a>
and its typedefs regex and wregex are thread safe, in that compiled regular
expressions can safely be shared between threads. The matching algorithms
<a class="link" href="../ref/regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a>,
<a class="link" href="../ref/regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a>,
and <a class="link" href="../ref/regex_replace.html" title="regex_replace"><code class="computeroutput"><span class="identifier">regex_replace</span></code></a>
are all re-entrant and thread safe. Class <a class="link" href="../ref/match_results.html" title="match_results"><code class="computeroutput"><span class="identifier">match_results</span></code></a> is now thread safe,
in that the results of a match can be safely copied from one thread to another
(for example one thread may find matches and push <a class="link" href="../ref/match_results.html" title="match_results"><code class="computeroutput"><span class="identifier">match_results</span></code></a> instances onto a queue,
while another thread pops them off the other end), otherwise use a separate
instance of <a class="link" href="../ref/match_results.html" title="match_results"><code class="computeroutput"><span class="identifier">match_results</span></code></a>
per thread.
</p>
<p>
The <a class="link" href="../ref/posix.html" title="POSIX Compatible C API's">POSIX API functions</a> are
all re-entrant and thread safe, regular expressions compiled with regcomp
can also be shared between threads.
</p>
<p>
The <a class="link" href="../ref/deprecated/old_regex.html" title="High Level Class RegEx (Deprecated)">class RegEx</a>
is only thread safe if each thread gets its own RegEx instance (apartment
threading) - this is a consequence of RegEx handling both compiling and matching
regular expressions.
</p>
<p>
Finally note that changing the global locale invalidates all compiled regular
expressions, therefore calling <code class="computeroutput"><span class="identifier">set_locale</span></code>
from one thread while another uses regular expressions will produce unpredictable
results.
</p>
<p>
There is also a requirement that there is only one thread executing prior
to the start of main().
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="locale.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../background.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="examples.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
-386
View File
@@ -1,386 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Understanding Marked Sub-Expressions and Captures</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../index.html" title="Boost.Regex 7.0.1">
<link rel="prev" href="unicode.html" title="Unicode and Boost.Regex">
<link rel="next" href="partial_matches.html" title="Partial Matches">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="unicode.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="partial_matches.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_regex.captures"></a><a class="link" href="captures.html" title="Understanding Marked Sub-Expressions and Captures">Understanding Marked Sub-Expressions
and Captures</a>
</h2></div></div></div>
<p>
Captures are the iterator ranges that are "captured" by marked sub-expressions
as a regular expression gets matched. Each marked sub-expression can result
in more than one capture, if it is matched more than once. This document explains
how captures and marked sub-expressions in Boost.Regex are represented and
accessed.
</p>
<h5>
<a name="boost_regex.captures.h0"></a>
<span class="phrase"><a name="boost_regex.captures.marked_sub_expressions"></a></span><a class="link" href="captures.html#boost_regex.captures.marked_sub_expressions">Marked
sub-expressions</a>
</h5>
<p>
Every time a Perl regular expression contains a parenthesis group <code class="computeroutput"><span class="special">()</span></code>, it spits out an extra field, known as a
marked sub-expression, for example the expression:
</p>
<pre class="programlisting">(\w+)\W+(\w+)</pre>
<p>
Has two marked sub-expressions (known as $1 and $2 respectively), in addition
the complete match is known as $&amp;, everything before the first match as
$`, and everything after the match as $'. So if the above expression is searched
for within <code class="computeroutput"><span class="string">"@abc def--"</span></code>,
then we obtain:
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Sub-expression
</p>
</th>
<th>
<p>
Text found
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
$`
</p>
</td>
<td>
<p>
"@"
</p>
</td>
</tr>
<tr>
<td>
<p>
$&amp;
</p>
</td>
<td>
<p>
"abc def"
</p>
</td>
</tr>
<tr>
<td>
<p>
$1
</p>
</td>
<td>
<p>
"abc"
</p>
</td>
</tr>
<tr>
<td>
<p>
$2
</p>
</td>
<td>
<p>
"def"
</p>
</td>
</tr>
<tr>
<td>
<p>
$'
</p>
</td>
<td>
<p>
"--"
</p>
</td>
</tr>
</tbody>
</table></div>
<p>
In Boost.Regex all these are accessible via the <a class="link" href="ref/match_results.html" title="match_results"><code class="computeroutput"><span class="identifier">match_results</span></code></a> class that gets filled
in when calling one of the regular expression matching algorithms ( <a class="link" href="ref/regex_search.html" title="regex_search"><code class="computeroutput"><span class="identifier">regex_search</span></code></a>, <a class="link" href="ref/regex_match.html" title="regex_match"><code class="computeroutput"><span class="identifier">regex_match</span></code></a>, or <a class="link" href="ref/regex_iterator.html" title="regex_iterator"><code class="computeroutput"><span class="identifier">regex_iterator</span></code></a>). So given:
</p>
<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">match_results</span><span class="special">&lt;</span><span class="identifier">IteratorType</span><span class="special">&gt;</span> <span class="identifier">m</span><span class="special">;</span>
</pre>
<p>
The Perl and Boost.Regex equivalents are as follows:
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Perl
</p>
</th>
<th>
<p>
Boost.Regex
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
$`
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">m</span><span class="special">.</span><span class="identifier">prefix</span><span class="special">()</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
$&amp;
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">m</span><span class="special">[</span><span class="number">0</span><span class="special">]</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
$n
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">m</span><span class="special">[</span><span class="identifier">n</span><span class="special">]</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
$'
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">m</span><span class="special">.</span><span class="identifier">suffix</span><span class="special">()</span></code>
</p>
</td>
</tr>
</tbody>
</table></div>
<p>
In Boost.Regex each sub-expression match is represented by a <a class="link" href="ref/sub_match.html" title="sub_match"><code class="computeroutput"><span class="identifier">sub_match</span></code></a> object, this is basically
just a pair of iterators denoting the start and end position of the sub-expression
match, but there are some additional operators provided so that objects of
type <a class="link" href="ref/sub_match.html" title="sub_match"><code class="computeroutput"><span class="identifier">sub_match</span></code></a>
behave a lot like a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code>: for example they are implicitly
convertible to a <code class="computeroutput"><span class="identifier">basic_string</span></code>,
they can be compared to a string, added to a string, or streamed out to an
output stream.
</p>
<h5>
<a name="boost_regex.captures.h1"></a>
<span class="phrase"><a name="boost_regex.captures.unmatched_sub_expressions"></a></span><a class="link" href="captures.html#boost_regex.captures.unmatched_sub_expressions">Unmatched
Sub-Expressions</a>
</h5>
<p>
When a regular expression match is found there is no need for all of the marked
sub-expressions to have participated in the match, for example the expression:
</p>
<pre class="programlisting">(abc)|(def)</pre>
<p>
can match either $1 or $2, but never both at the same time. In Boost.Regex
you can determine which sub-expressions matched by accessing the <code class="computeroutput"><span class="identifier">sub_match</span><span class="special">::</span><span class="identifier">matched</span></code> data member.
</p>
<h5>
<a name="boost_regex.captures.h2"></a>
<span class="phrase"><a name="boost_regex.captures.repeated_captures"></a></span><a class="link" href="captures.html#boost_regex.captures.repeated_captures">Repeated
Captures</a>
</h5>
<p>
When a marked sub-expression is repeated, then the sub-expression gets "captured"
multiple times, however normally only the final capture is available, for example
if
</p>
<pre class="programlisting">(?:(\w+)\W+)+</pre>
<p>
is matched against
</p>
<pre class="programlisting">one fine day</pre>
<p>
Then $1 will contain the string "day", and all the previous captures
will have been forgotten.
</p>
<p>
However, Boost.Regex has an experimental feature that allows all the capture
information to be retained - this is accessed either via the <code class="computeroutput"><span class="identifier">match_results</span><span class="special">::</span><span class="identifier">captures</span></code> member function or the <code class="computeroutput"><span class="identifier">sub_match</span><span class="special">::</span><span class="identifier">captures</span></code> member function. These functions
return a container that contains a sequence of all the captures obtained during
the regular expression matching. The following example program shows how this
information may be used:
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="keyword">void</span> <span class="identifier">print_captures</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">regx</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">text</span><span class="special">)</span>
<span class="special">{</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex</span> <span class="identifier">e</span><span class="special">(</span><span class="identifier">regx</span><span class="special">);</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">smatch</span> <span class="identifier">what</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Expression: \""</span> <span class="special">&lt;&lt;</span> <span class="identifier">regx</span> <span class="special">&lt;&lt;</span> <span class="string">"\"\n"</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Text: \""</span> <span class="special">&lt;&lt;</span> <span class="identifier">text</span> <span class="special">&lt;&lt;</span> <span class="string">"\"\n"</span><span class="special">;</span>
<span class="keyword">if</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">regex_match</span><span class="special">(</span><span class="identifier">text</span><span class="special">,</span> <span class="identifier">what</span><span class="special">,</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">match_extra</span><span class="special">))</span>
<span class="special">{</span>
<span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">j</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"** Match found **\n Sub-Expressions:\n"</span><span class="special">;</span>
<span class="keyword">for</span><span class="special">(</span><span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">what</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">" $"</span> <span class="special">&lt;&lt;</span> <span class="identifier">i</span> <span class="special">&lt;&lt;</span> <span class="string">" = \""</span> <span class="special">&lt;&lt;</span> <span class="identifier">what</span><span class="special">[</span><span class="identifier">i</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="string">"\"\n"</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">" Captures:\n"</span><span class="special">;</span>
<span class="keyword">for</span><span class="special">(</span><span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">what</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
<span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">" $"</span> <span class="special">&lt;&lt;</span> <span class="identifier">i</span> <span class="special">&lt;&lt;</span> <span class="string">" = {"</span><span class="special">;</span>
<span class="keyword">for</span><span class="special">(</span><span class="identifier">j</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">j</span> <span class="special">&lt;</span> <span class="identifier">what</span><span class="special">.</span><span class="identifier">captures</span><span class="special">(</span><span class="identifier">i</span><span class="special">).</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">j</span><span class="special">)</span>
<span class="special">{</span>
<span class="keyword">if</span><span class="special">(</span><span class="identifier">j</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">", "</span><span class="special">;</span>
<span class="keyword">else</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">" "</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"\""</span> <span class="special">&lt;&lt;</span> <span class="identifier">what</span><span class="special">.</span><span class="identifier">captures</span><span class="special">(</span><span class="identifier">i</span><span class="special">)[</span><span class="identifier">j</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="string">"\""</span><span class="special">;</span>
<span class="special">}</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">" }\n"</span><span class="special">;</span>
<span class="special">}</span>
<span class="special">}</span>
<span class="keyword">else</span>
<span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"** No Match found **\n"</span><span class="special">;</span>
<span class="special">}</span>
<span class="special">}</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="special">[])</span>
<span class="special">{</span>
<span class="identifier">print_captures</span><span class="special">(</span><span class="string">"(([[:lower:]]+)|([[:upper:]]+))+"</span><span class="special">,</span> <span class="string">"aBBcccDDDDDeeeeeeee"</span><span class="special">);</span>
<span class="identifier">print_captures</span><span class="special">(</span><span class="string">"(.*)bar|(.*)bah"</span><span class="special">,</span> <span class="string">"abcbar"</span><span class="special">);</span>
<span class="identifier">print_captures</span><span class="special">(</span><span class="string">"(.*)bar|(.*)bah"</span><span class="special">,</span> <span class="string">"abcbah"</span><span class="special">);</span>
<span class="identifier">print_captures</span><span class="special">(</span><span class="string">"^(?:(\\w+)|(?&gt;\\W+))*$"</span><span class="special">,</span>
<span class="string">"now is the time for all good men to come to the aid of the party"</span><span class="special">);</span>
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
Which produces the following output:
</p>
<pre class="programlisting">Expression: "(([[:lower:]]+)|([[:upper:]]+))+"
Text: "aBBcccDDDDDeeeeeeee"
** Match found **
Sub-Expressions:
$0 = "aBBcccDDDDDeeeeeeee"
$1 = "eeeeeeee"
$2 = "eeeeeeee"
$3 = "DDDDD"
Captures:
$0 = { "aBBcccDDDDDeeeeeeee" }
$1 = { "a", "BB", "ccc", "DDDDD", "eeeeeeee" }
$2 = { "a", "ccc", "eeeeeeee" }
$3 = { "BB", "DDDDD" }
Expression: "(.*)bar|(.*)bah"
Text: "abcbar"
** Match found **
Sub-Expressions:
$0 = "abcbar"
$1 = "abc"
$2 = ""
Captures:
$0 = { "abcbar" }
$1 = { "abc" }
$2 = { }
Expression: "(.*)bar|(.*)bah"
Text: "abcbah"
** Match found **
Sub-Expressions:
$0 = "abcbah"
$1 = ""
$2 = "abc"
Captures:
$0 = { "abcbah" }
$1 = { }
$2 = { "abc" }
Expression: "^(?:(\w+)|(?&gt;\W+))*$"
Text: "now is the time for all good men to come to the aid of the party"
** Match found **
Sub-Expressions:
$0 = "now is the time for all good men to come to the aid of the party"
$1 = "party"
Captures:
$0 = { "now is the time for all good men to come to the aid of the party" }
$1 = { "now", "is", "the", "time", "for", "all", "good", "men", "to",
"come", "to", "the", "aid", "of", "the", "party" }
</pre>
<p>
Unfortunately enabling this feature has an impact on performance (even if you
don't use it), and a much bigger impact if you do use it, therefore to use
this feature you need to:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Define BOOST_REGEX_MATCH_EXTRA for all translation units including the
library source (the best way to do this is to uncomment this define in
boost/regex/user.hpp and then rebuild everything.
</li>
<li class="listitem">
Pass the match_extra flag to the particular algorithms where you actually
need the captures information (regex_search, regex_match, or regex_iterator).
</li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="unicode.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="partial_matches.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
-51
View File
@@ -1,51 +0,0 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Configuration</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Boost.Regex 7.0.1">
<link rel="up" href="../index.html" title="Boost.Regex 7.0.1">
<link rel="prev" href="../index.html" title="Boost.Regex 7.0.1">
<link rel="next" href="configuration/compiler.html" title="Compiler Setup">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="configuration/compiler.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_regex.configuration"></a><a class="link" href="configuration.html" title="Configuration">Configuration</a>
</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="configuration/compiler.html">Compiler Setup</a></span></dt>
<dt><span class="section"><a href="configuration/standalone.html">Use in Standalone
Mode (without the rest of Boost)</a></span></dt>
<dt><span class="section"><a href="configuration/locale.html">Locale and traits class
selection</a></span></dt>
<dt><span class="section"><a href="configuration/tuning.html">Algorithm Tuning</a></span></dt>
</dl></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 1998-2013 John Maddock<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="configuration/compiler.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More