<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">