2016-03-04 4 views
0

Comment est-il possible d'utiliser regex juste pour extraire les noms de la chaîne suivante:Regex pour extraire les noms d'une chaîne dans une liste

Liam got 6,andy got 6 

et l'ajouter à une liste, je l'ai essayé d'utiliser regex mais je ne peux pas trouver l'expression correcte pour extraire juste les noms et suis encore un peu fragile sur cette zone.

toute aide serait appréciée

+0

Est-ce que le nom est toujours à l'avant de la clause (structure prévisible), ou y at-il une liste de noms à pul Je viens de? – lintmouse

+0

le nom sera toujours dans la même position, mais le nom peut contenir des caractères majuscules et minuscules –

+0

Les phrases restantes seront toujours les mêmes? Je veux dire "eu 6" – Ian

Répondre

1

Pour un cas simple, je recommande toujours de ne pas utiliser Regex, vous pourriez le faire comme ceci en utilisant string.Split, string.Replace et LINQWhere:

Dim names As String() = sentence.Replace("got ", "").Split(" ").Where(Function(t) Char.IsLetter(t(0))).ToArray() 

Supposons que vous avez cette sentence:

Dim separators As Char() = {",", " "} 
Dim names As String() = sentence.Replace("got ", "").Split(separators, System.StringSplitOptions.RemoveEmptyEntries).Where(Function(t) Char.IsLetter(t(0))).ToArray() 

Quelle est arriver étape par étape:

"Andy got 6,may got 10, blue got 9, hERald got 0" 
"Andy 6,may 10, blue 9, hERald 0" 'After replace 
"Andy" "6" "may" "10" "blue" "9" "hERald" "0" 'After split 
"Andy" "may" "blue" "hERald" 'After where 
1

Cela devrait fonctionner dans vb.net.

(?<=^|,)\w+ 

https://regex101.com/r/wT8rE9/1

Et si elle peut avoir un espace après la virgule:

(?<=^|,|,\s)\w+ 

Si vous êtes à l'aise avec des groupes de capture, vous pouvez effectuer les opérations suivantes qui devrait être plus efficace:

(?:^|,\s*)(\w+) 
+0

cela fonctionne mais si je voulais inclure la virgule dans la regex, donc il extrairait comme ceci: liam, andy, dylan, ben –

+0

Si vous voulez passer la route regex avec la substitution, cela pourrait vous donner une idée: https : //regex101.com/r/eM6gL5/1. – lintmouse