Boost C++ Libraries: Ticket #13156: Not word boundary - \b vs. NOT \B are not the same https://svn.boost.org/trac10/ticket/13156 <p> I am reposting this from another source. </p> <p> In theory, \B should match everywhere \b doesn't. </p> <p> In boost regex, this is not the case at the beginning nor end of string. </p> <p> Below is a list of test results from a few Perl-like engines. Apparently, this was fixed in Perl v5.22 (below shows v5.20). The only engines that seem to handle this correctly is PHP and ECMAScript. </p> <hr /> <pre class="wiki"> Target = ' ssssssssssssss ' Replacement = '&lt;&gt;' ================================================== PHP 7.03 \b = ' &lt;&gt;ssssssssssssss&lt;&gt; ' \B = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?&lt;!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' (?&lt;!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' ======================================= Perl 5.20 \b = ' &lt;&gt;ssssssssssssss&lt;&gt; ' \B = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s ' (?!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?&lt;!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' (?&lt;!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' ======================================== Boost 1.64 \b = ' &lt;&gt;ssssssssssssss&lt;&gt; ' \B = ' &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s ' (?!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?&lt;!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\B) = '&lt;&gt; &lt;&gt;ssssssssssssss&lt;&gt; &lt;&gt;' (?&lt;!\B) = '&lt;&gt; &lt;&gt;ssssssssssssss&lt;&gt; &lt;&gt;' ===================================== JavaScript \b = ' &lt;&gt;ssssssssssssss&lt;&gt; ' \B = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\b) = '&lt;&gt; &lt;&gt; &lt;&gt; s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s&lt;&gt;s &lt;&gt;' (?!\B) = ' &lt;&gt;ssssssssssssss&lt;&gt; ' </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/13156 Trac 1.4.3