Groovy extraire la sous-chaîne de caractères avant le caractère

J'ai un tas de cordes, comme

asdf v1.0
jkl v3.04

toutes mes chaînes sont un groupe de caractères suivie d'un espace puis "v", puis un certain nombre. Je veux extraire de chaque chaîne, la partie qui vient avant le " v "et le caractère d'espace précédant le" v " de sorte que:

asdf v1.0 becomes 'asdf'
jkl v3.04 becomes 'jkl'

juste besoin d'un peu d'aide avec cela. J'ai essayé takeWhile { it != 'v' } mais qui finit par s'y compris l'espace avant le " v " dans la chaîne de résultat que je ne veux pas.

"asdf v1.0".split()[0] devrait être bon.
Cette solution échoue si il y a un espace dans la zone d'entrée de la chaîne. Pour l'entrée John Kramer v12.2, qui je présume doit retourner "John Kramer", votre solution rendements "John"

OriginalL'auteur Anonymous Human | 2014-11-14