正则表达式:根据前一组长度匹配可变数量的字符

Regex: Match variable amount of characters based on previous group length

我正在寻找一个正则表达式(一个 (e)grep 正则表达式)来匹配以下字符串;模式是 "lesser than or equal amount of E's than in the previous set of E's."

示例:

应该匹配:EEEEEEE EEE EE EE E

不应该匹配:E EE EE E EEEE

我正在考虑尝试一些带有否定的东西,但没有达到预期的效果..

echo 'EEEEEEE EEE EE EE E' | egrep -v '\b(E+)\b.*E' # => EEEEEEE EEE EE EE E
echo 'E EE EE E EEEE' | egrep -v '\b(E+)\b.*E' # => no matches

这个想法是,在获取完整的 E 序列 (\b(E+)\b) 之后,不应该再出现相同的序列加上另一个 E (E).显然,我们用-v来表示否定。