Ответ 1
Сопоставьте все с начала строки до первой запятой:
^(.+?),
Я хочу извлечь текст перед первой запятой (имя и фамилия) из строк, например:
John Smith, RN, BSN, MS
Thom Nev, MD
Foo Bar, MD,RN
Я попытался с регулярным выражением:
(.*)\s(.*),\s
но это не работает для всех ситуаций. Как достичь этого?
Сопоставьте все с начала строки до первой запятой:
^(.+?),
Как насчет: yourString.split(",")[0]
Вы должны использовать не жадные операторы регулярных выражений, попробуйте: (.+?),
вместо: (.+),
. Обратите внимание, что при использовании жадных операторов вы будете сопоставлять все до последней запятой вместо первой.
Как насчет следующего:
[^,]*
[^,]*
означает "соответствовать любому количеству символов, которые не являются запятыми", что я считаю именно тем, что вы пытаетесь сделать здесь. Вы можете привязать его к началу строки iwth ^
, например:
^[^,]*
^[a-zA-Z0-9]+
.. используйте это... это правильный ответ, чтобы получить значение, разделенное запятыми
Решение без регулярных выражений:
str = 'John Smith, RN, BSN, MS'
p str[0, str.index(',')] #=>"John Smith"