I think this comes from a fundamental misunderstanding of what the * does in regular expressions, but I can’t find a solid answer to my question anywhere…
All sources say that * matches 0 or more repetitions of the character/character classes prior to it (of course, when it itself is used outside of a character class). Doesn’t this mean it should match everything, though?
Consider, for example,
grep -E "[ab]*"
Shouldn’t this match anything, because anything contains 0 or more instances of a or b? For example, “apple” contains 1 instance, “joseph” contains 0 instances…