Kleene Star regex question, sed behavior?
$ printf "ab\n" | sed -En 's/b*// p' | od -t c
0000000   a   b  \n
0000003


This regex expression "$b*$" does match the empty string, which is zero '$b$', at the very front of the input "$ab$". This is in accordance with the definition of Kleene star since $b^*$ stands for the language $\{\epsilon, b, bb, \cdots\}$, where $\epsilon$ stands for the empty string. The matched part, an empty substring is replaced by the empty string. So, the same input string "$ab$" is printed with the newline attached.

Note that sed tries to find a match as early as possible. Although the substring "$b$" of "$ab$" matches "$b*$" more, it is ignored by sed completely since it happens later than the match said above.