We have the adjacent sibling selector:
E1 + E2
We have the general sibling selector:
E1 ~ E2
The general sibling selector matches all following siblings of E1 that match the selector E2. There is, however, no way to restrict the number of siblings matched.
If we want to match only the third sibling, we would write a selector like:
E1 + E2 + E3
If we want to match the first five siblings, we would write five selectors like:
E1 + E2
E1 + E2 + E3
E1 + E2 + E3 + E4
E1 + E2 + E3 + E4 + E5
What do we do if we want to match the first n siblings that match another criterion as well (e.g. only the first three h3 siblings of an h2)? What do we do if we want to stop matching sibling if some other sibling is encountered (e.g. match all siblings of h2 until another h2 is encountered).
All these are issues that I have had in my practice. I will write a proposal for a syntax of this kind of later.