<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/135009>135009</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc++] `<regex>`: `\B` should not be found in `a+a`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Alcaro
      </td>
    </tr>
</table>

<pre>
    ```c++
#include <regex>
#include <stdio.h>

int main() {
    try {
        const char * s{"a+a"};
        std::regex r{"\\B"};
        std::cmatch m;
 bool result = std::regex_search(s, m, r);
        printf("regex_search: %d\n", result);
        for (unsigned i = 0; i < m.size(); ++i) {
 printf("m[%d]", i);
            if (m[i].matched) {
 printf(" = %d %d", (int)(m[i].first-s), (int)(m[i].second-s));
 } else {
                puts(".matched: false");
            }
 }
    } catch (const std::exception& e) {
        printf("Exception: %s\n", e.what());
    }
}
```
Expected: No match; all four positions in that string should be boundary.
Actual: libc++ thinks end of string is a non-boundary. It also returns match if searching for `\b$`.

https://godbolt.org/z/69q9ehe4v
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8VN1y8yYQfZr1zU40GPRjXehCtuOZ3vQVOgiQRYvABZQm39N3QLI_J-lXjUa2xO7Zc_Ys8BD01SrVQXWE6rzjS5yc73ojuHe7wcmPDmqy3gLoMd2kB8q0FWaRCoGdvLqqd2Cv3xZClNoV07ZEem0jzlxboAegLUKTsBARo_94ekuXcDZEFBP3CLTHkFYp5UCPHCiF5gzsOTxECawH1mcu6NdwqE5QnY7_myBmHsWE87Y8OGfQq7CYiMDOX4D_CIp7MQE9BKAnnNPDA20_Y9-8tnHMIumnNNYj0EpCdbKJU0rOlb4hjC7JPiw2myNRZy4E2DH_PeFcBP1DrX1MX1dn9FNXn0nMydxc-LzV1d9KpkuPqWqK1lCdi9wZJX8Bmikl1FXTigv0oG3W84Qzah_iS8hffxESlHBWbjF3ZtCcUZmgvozGo81LDCuVB1PW48hNUJnNfwhMY7ACbwuphMgDAPSwztzDcfUu1C1qZ4HWqD4P7FebXx-xq8fhyWNV_DPxuHn1zGqlsT3vmwxI__p-UyKucn53mMUlk7kxOLrF480FnYoF1BbjxBNpr-0Vw-QWI3FQOLjFSu4_CiB9L-LCTUIzetg2McZJ278CKivRjfd8HZCjdfblkY6_ReQmOPQqLt6GlU2alHWmU1ae1ppAdRqAllCTYt3uU4y3kHpJL0AvVycHZ2Lh_BXo5QfQS93-3apJlW872THZspbvVLdvypKSutxXu6k7iLEZRrkfxEBJ24z7ZhR8L5tyPMhDNdKd7iihFSlJu2dlXVXFXtVEVI0sa8Zo2TIoiZq5NoUxb3OqvdMhLKrbs4qQdmf4oEy4H36-S1Evw3INUBKjQww_86KOJh-TP5sI1TkLfzoC01u_deMINblbYl1Mtoypr8k1qMl6mNVkt3jTfemVjtMyFMLNQC-JwfbzcvPuTyUi0EuWEYBeNiVvHf03AAD__6FDncU">