Newlines are whitespace too as far as the \s
character class is concerned. If you want to match spaces only you need to match [ ]
instead:
>>> re.findall("^\s*xyxyxy[ ]+([a-z0-9]+).*$", text, re.MULTILINE)
[u'testmatch0', u'testmatch1', u'testmatch2', u'testmatch3']