I posted to Stack Exchange, and they recommended that I file a bug. I'd rather not copy+paste it all, so here's the link: https://unix.stackexchange.com/questions/579889/why-doesnt-this-sed-command-replace-the-3rd-to-last-and here's an example > echo 'dog and foo and bar and baz land good' |    sed -E 's/(.*)\band\b((.*\band\b){2})/\1XYZ\2/' expected output: dog XYZ foo and bar and baz land good actual output: dog and foo XYZ bar and baz land good here's my sed --version output: sed (GNU sed) 4.2.2 I hope this is helpful, cheers!