web-dev-qa-db-fra.com

Extraire le texte avant la première virgule avec regex

Je souhaite extraire le texte avant la première virgule (nom et prénom) à partir de chaînes telles que:

John Smith, RN, BSN, MS
Thom Nev, MD
Foo Bar, MD,RN

J'ai essayé avec regex:

(.*)\s(.*),\s

mais cela ne fonctionne pas dans toutes les situations ... Comment y parvenir?

17

Correspond à tout depuis le début de la chaîne jusqu'à la première virgule:

^(.+?),
54
rid

Que diriez-vous de: yourString.split(",")[0]

17
aquinas

Vous devez utiliser des opérateurs regex non gloutons, essayez: (.+?), au lieu de: (.+),. Notez que lorsque vous utilisez des opérateurs gourmands, vous faites correspondre tout ce qui précède la dernière virgule au lieu de la première.

6
danielrvt

Que diriez-vous de ce qui suit:

[^,]*

[^,]* signifie "faire correspondre un nombre quelconque de caractères qui ne sont pas des virgules", ce que je pense exactement ce que vous essayez de faire ici. Vous voudrez peut-être l'ancrer au début de la chaîne avec le ^, comme ceci:

^[^,]*
4
Andrew Clark
^([^,])+

Cette expression rationnelle a fonctionné pour moi dans Sublime. Il a tout sélectionné juste avant la première virgule.

2
AlexG
^[a-zA-Z0-9]+ 

..use this ... ceci est la bonne réponse pour obtenir la première valeur séparée par des virgules

0
nagina