2015-06-10 4 views
1

Там является строкаимена Extract вокруг каждое слова регулярного выражения

Mary loves Mike,Jack loves Lily,Ethan loves Lydia 

Я хочу, чтобы извлечь имена вокруг каждой loves с python.But ниже код не может работать.

names = re.search(r'(\S+) loves (\S+)',str,) 
while names: 
    print names.group(1) 
    print names.group(2) 
+3

В будущем было бы полезно включить фактические ошибки, которые вы видите, или если нет ожиданий/фактических выходов. Это поможет сообществу понять, что вы пытаетесь сделать и какие проблемы вы столкнулись. '' Не работает ''на самом деле не очень хорошее объяснение :) – Lix

+0

Спасибо за ваш совет – professorz

+0

Вы с нетерпением ждёте @prof! Счастливое кодирование. – Lix

ответ

9
>>> import re 
>>> re.findall(r"([a-zA-Z]+) loves ([a-zA-Z]+)", "Mary loves Mike,Jack loves Lily,Ethan loves Lydia") 
[('Mary', 'Mike'), ('Jack', 'Lily'), ('Ethan', 'Lydia')] 
1

Вы можете использовать \ ш + для извлечения слов. А также, поскольку вы хотите извлечь все совпадения, вы можете использовать все.

str="Mary loves Mike,Jack loves Lily,Ethan loves Lydia"; 
names = re.findall("(\w+) loves (\w+)", str) 
for name in names: 
     print name 
+0

'\ w' поддерживает символы подчеркивания и цифры, хотя обычно это не имя – jamylak

Смежные вопросы