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

    <tr>
        <th>Summary</th>
        <td>
            basic_regex::__search error with "$" pattern
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    Hello,

If we use a pattern like `$` or something more complex as ` *$` but that does not match the string,
`__search` return `false` as not found because we don't try the empty string.

The problem is the for loop: https://github.com/llvm/llvm-project/blob/ef888bc67c726deb8c74ea32e7c8c9ace756b667/libcxx/include/regex#L6165

An example, is trying to match `$` against `hello`.
We will successively try:
* `hello` (before the loop)
* `ello`
* `llo`
* `lo`
* `o`

And nothing else, and so this is not a match.

It seems that having a last run with `__match_at_start(__last, __last, __m, __flags, false)` (only if `match_not_null` is not set) fix the problem.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVE2PrDYQ_DXm0srI03wfOEz2aZQn5RgpR2SbBpw19sg2OzP_PjKw2lkll3cB1LTL1VVlixD0ZIk6Vv7Oyh-ZWOPsfCfMu7Yuk254dn-QMY7hG-M_GL_sz58j3AnWQCDgJmIkb8HodwJWcYYFqzg4D8EtFGdtJ1icJ1BuuRl6gAipDRhejla5RoiziDA4CmBdhEVENUOcCUL02k5f21e87wMJr-a00lNcvU1wozCBUknsCKNb7QCSlEgs7wSDswzrCNE_N2BabvF5wJ9eZ_trJrh5Jw0toMPWOzoPxrkbyy8wx3gLLL8wvDK8TjrOqzwptzC8GvPx-frt5t0_pCLDqzROMrzS2DSNVFWtaqwGko2qCxI5Uq0a1QpFdVnJqqoTgJbq8WB41VaZdSCGV08TPRjmf1bnqnxle7FAD5GEZfi28fXPpHh0h4hfjohJaBtiqsybpxU_Bv-b4K6NgbAqRSHoDzLPBJTG3PfCy-syYNhIGpOpSZ5NGmy_tR6d32r_V_pP5aVwDDgkQ7cYUfIY30DYAYKDOOuQRk5-i33cb07-jBCIlrCHaxYfCUOAESGCXy3cddz06fttbS9iH6LwkWHT96kr7fX6teyv0YgppM89dNgekjhrnqDHBLkDWhd7uxqT_h88A0WGLYz6sUl3BO0b7Wzo8qHNW5FRd67ac17zouTZ3AlVc5lXOWE18rKqMVcczxVh2RQttUOmO-SY84bX_MzrnJ_UQApFjqqQNFBdsoLTIrQ5pYyenJ8yHcJKXVUUdZkZIcmE7SpAtHSH7SdDTDeD77Zcy3UKrOBGhxi-UKKOhjopglb9HtX8wvLL51EF8t75Q2_ElEfEz4sjW73pfvlUbdQCw-tG_d8AAAD__2Cmejw">