синтаксический анализ: совпадение в средней части строки

#python #string #parsing #partial

#python #строка #синтаксический анализ #частичное

Вопрос:

Я использую пакет синтаксического анализа для извлечения некоторой информации из строк. У меня есть шаблон, подобный:

 pattern = compile("hello {}")
s = "I am Jack, hello Mike, hello Tom! nice to meet you."
pattern.parse(s)
 

Я хочу извлечь « Mike , « Tom из s, независимо от того, что находится до и после совпадающих шаблонов в строке. Как я должен изменить свой шаблон?

Комментарии:

1. parse Действительно ли это необходимо здесь? Для этого случая хорошо подходит очень распространенная re библиотека.

Ответ №1:

Используйте re.findall примерно так:

 import re
s = "I am Jack, hello Mike, hello Tom! nice to meet you."
names = re.findall(r'[Hh]ellos (w )', s)
print(names)
# ['Mike', 'Tom']
 

Комментарии:

1. Это хорошее решение для данного случая. Спасибо. К сожалению, я действительно тупой, и у меня есть еще куча шаблонов, которые нужно найти в моих данных. Поэтому, если синтаксический анализ может работать, он предпочтительнее.