Can't you just parse it all with a single regexp?
<pre>
SOFTWARE_RE = re.compile(r"(?P<name>.*?)\s*(?P<operator>==|=|>=|<=|>|<|)\s*(?P<version>[a-zA-Z0-9_,.-]*)", re.U)
</pre>