regex-applicative icon indicating copy to clipboard operation
regex-applicative copied to clipboard

`replace` seems to be greedy even with `few`

Open jtojnar opened this issue 3 years ago • 1 comments

> replace ("x" <$ string "/*" <* few anySym <* string "*/") "1 /* foo */ 2 /* bar */ 3"
"1 x 3"

Whereas I would expect 1 x 2 x 3 as a result.

Replacing findLongestInfix by findFirstInfix in replace definition seems to fix this case but I am not sure if this is a proper solution.

Using regex-applicative-0.3.4

jtojnar avatar Dec 15 '21 08:12 jtojnar

I think you are correct. Would you care to prepare a PR?

Just in case someone is relying on the old behavior, let's introduce the corrected version under a new name (say, replace2) and add a DEPRECATED pragma on the old one. And please add the tests for both greedy and non-greedy regexes. (Perhaps even add doctests?)

Thanks!

UnkindPartition avatar Dec 15 '21 11:12 UnkindPartition