4 ms·
The solution... not_this|(but_this) ... is interesting. But since it returns the match in a submatch I would say the \K approach is better: (?:not_th
by Tipewryter 5y ago
The solution...
not_this|(but_this)
... is interesting. But since it returns the match in a submatch I would say the \K approach is better:
(?:not_this.*?)*\Kbut_this
Because usually when you try hard to accomplish something with a regex, you do not have the luxury to say "And then please disregard the match and look at the submatch instead".
- lifthrasiir 5y agoThat doesn't work. `(?:"Tarzan".*?)*\KTarzan` should behave identically without `\K`, and it will match `"Tarzan" "Tarzan"` because the ungreedy quantifier ? still allows backtracking (it just changes the search order). You want the possessive quantifier + instead; `not_this|(but_this)` is equivalent because regexp engines will not look back into once matched string.
- Tipewryter 5y agoInteresting. I took the \K solution right from the article without trying it. Now that I try it, it indeed does not work. Maybe the author reads this and can look at it.