Why does replace-regexp backwards work so differently?

C-u - M-x replace-regexp \w+

The - prefix arg replaces backwards but it hits one char at a time, as if the plus sign weren’t there. The same replacement forwards (without the prefix arg) does hit one word at a time. What’s going on, @emacs@lemmy.ml?

  • Sandra@idiomdrottning.orgOP
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 year ago

    But what’s so weird is that replace-regexp forwards with \w+ replaces all words, while replace-regexp backwards with \w+ replaces the characters individually.

    @0v0 @emacs

    • 0v0
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Consider the string abc. From the end, moving backwards, when does it match \w+, and what does it match? When it reaches c, it matches c. And from the front, moving forwards? When it reaches a, it matches abc. This is why it acts differently.

      • Sandra@idiomdrottning.orgOP
        link
        fedilink
        arrow-up
        3
        ·
        1 year ago

        Yes, I got that, that wasn’t the weird part. The weird part is why the matcher is searching char-by-char backwards in the first place as opposed to skipping match-by-match.

        I’ll use “\b\w+”, that seems to work well. \W\w+ was not good since it caught the spaces.

        (Thanks for your patient repeated replies, BTW, I don’t mean to come across as ungrateful.)

        @0v0 @emacs