It kinda depends on your environment and regex engine! If it is a DFA or POSIX NFA engine, then you are always going to match the longest, left-most possible pattern. You can determine if your engine works this way by trying to match
nfa|nfa not
against the string "nfa not". If the entire string matches, then you know you're working with a longest, left-most engine, ie. DFA or POSIX NFA.
However, the most common engine type is Traditional NFA, where you are granted a lot of expressive power and control with your regexes but, as usual, that power comes with responsibility. In a traditional NFA, longest left-most is not guaranteed. I will explain Alex K's abc|ab|a solution. The '|' (called OR or alternation) is a way of saying match abc OR ab. You may wonder, "what if the text is 'abc'? Either one works in that case!". That is true! And in a traditional NFA, the options are tried from left to right. So in a traditional NFA, searching for ab|abc in the text "abc" will match "ab" and searching abc|ab will match the whole "abc". You can take advantage of this by searching for <=|= in your text to ensure you always get '<=' rather than just the '='.
It turns out that Alex K's solution will work regardless of engine because '<=' is also the longest, left-most match. I thought I'd give a deeper explanation to provide some understanding and maybe arouse your interest. Check out 'Mastering Regular Expressions' by J. Friedl if you want to learn more!
(abc|ab|a)matches abc or ab or a ...(<=), it must match all values inside that aren't specified as optional and therefore will not match=or>=or~=etc...(=)&(<=)would both match"a <= b"which is his concern I thinka|b|c..., for backtracking regex engines, the first branch that succeeds wins, for posix regex engines (sed, grep...) the longest match in the alternation wins.