title: (regex) Error difference between \b and NOT \B
body: <p>I wanted to test the workings of <strong><code>\B</code></strong> specifically, across different<br>
  engines that should all be handled the same.   </p>
  
  <p>I needed to do this to feel confident in using this construct.  </p>
  
  <p>The regex engines are: <strong>Perl,  PHP,  JS,  and Boost</strong>.<br>
  These engines should <em>ALL</em> produce the exact same result.  </p>
  
  <p>But they don't.   </p>
  
  <p>In theory, \B should match everywhere \b doesn't.<br>
  The list below show the results using the exact same regex on the different engines.  </p>
  
  <p>To me, it looks like PHP and JavaScript work as per definition,<br>
  but Perl and Boost are slightly different.  </p>
  
  <p>If anyone can validate these results and/or shed light on whether any of<br>
  this is the result of bugs.<br>
  Or, possibly there is a misconception of the definitions of <strong>\b</strong> and <strong>\B</strong><br>
  as, for these engines, they absolutely are supposed to be exactly the same.  </p>
  
  <p>Thanks for your time!  </p>
  
  <p>(the simple code to produce this output is not included, but can be if needed) </p>
  
  <pre><code> 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; '
  </code></pre>