zamboriz meglehetősen velős hozzászólásában van a lényeg. Egy regexpnél a szabály az, hogy az első előfordulást fogja megtalálni. Kedves példa rá:
$ echo zabaabaaab | sed -E 's/a*/X/'
Xzabaabaaab
$ echo zabaabaaab | sed -E 's/a+/X/'
zXbaabaaab
Ellenben ha adott pozícióban többféle hosszúságban lehet találni, akkor ebből a pozícióból kiindulva a lehető leghosszabbat fogja kiválasztani. Az, hogy a RE egyes részei hol fejeződnek be és hol kezdődnek a megtalálásnál, az csak a legvégén dől el. Ezt grep-pel még színezéssel sem igazán lehet kimutatni (mert kicsit másént viselkedik, mint az néhányaknak logikus lenne), de pl. sed-del igen.
$ echo aaaababababcabcabc | sed -E 's/a+/X/'
Xbabababcabcabc
$ echo aaaababababcabcabc | sed -E 's/a+(ab)*(abc)*/X/'
X
$ echo aaaababababcabcabc | sed -E 's/a{4}(ab)*(abc)*/X/' # Pty javaslata
Xbabababcabcabc