#python #regex #string
#python #Регулярное выражение #строка
Вопрос:
Я пытаюсь извлечь подстроки из длинной строки в python3
def get_data(text):
initials = text.split()[1]
names = re.search(initials '(.*)EMP',text).group(1).lstrip().title()
return initials, names
Мне нужны следующие результаты
x,y = get_data('J JS JOHN SMITH EMP 223456')
JS
John Smith
x,y = get_data('J JB JOE BLOGGS CONT 223456')
JB
Joe Bloggs
x,y = get_data('J JS JOHN SMITH 223456')
JS
John Smith
Я могу сделать это с помощью EMP или CONT, но я изо всех сил пытаюсь сделать это с помощью EMP ИЛИ CONT ИЛИ ‘None’
Я новичок в регулярных выражениях, поэтому помощь оценена
Ответ №1:
Нет необходимости делать разделение, а затем искать.
Вы можете использовать одно регулярное выражение в re.findall
или re.search
или re.match
:
^S s (S )s (. ?)(?:s (?:EMP|CONT))?s d
Демонстрация регулярных выражений
Подробности регулярного выражения:
^
: НачатьS
: Сопоставление 1 пробелов без пробеловs
: Сопоставьте 1 пробелы(S )
: Сопоставьте 1 пробелов и зафиксируйте в группе #1s
: Должно сопровождаться 1 пробелами(. ?)
: Сопоставьте 1 любого персонажа и захватите в группу №2(?:s (?:EMP|CONT))?
: необязательно совпадатьEMP
илиCONT
после 1 пробеловs d
: За которым следует 1 пробелов и 1 цифр.