Как найти дату по определенному слову с помощью регулярного выражения

#python-3.x

Вопрос:

 Sentence : "I went to hospital and admitted. Date of admission: 12/08/2019 and surgery of Date of surgery: 15/09/2015. Date of admission: 12/05/2018 is admitted Raju"

keyword: "Date of admission:"
 

Необходимое решение: 12/08/2019,12/05/2018

Есть ли какое-либо решение, чтобы получить даты рядом с «Датой поступления:» только. Есть ли какое — нибудь решение

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

1. Ваше требуемое решение, похоже, запрашивает только даты сразу после "Date of admission" , но одна из них — дата после "surgery"

2. @ddejohn Только дата должна быть указана после даты поступления: Не следует принимать дату операции:

3. Да, но вторая дата в «требуемом решении», которое вы указали, указана после «операции».

4. Извините, что я отредактировал

Ответ №1:

Я не смог воспроизвести результат в ответе @Ders. Плюс, я думаю .findall() , что в любом случае здесь более уместно, так что:

 import re

pattern = re.compile(r"Date of admission: (d{2}/d{2}/d{4})")

print(pattern.findall(s))
# ['12/08/2019', '12/05/2018']
 

Ответ №2:

Используйте группу захвата. Если re совпадает, то вы можете получить содержимое группы.

 import re

p = re.compile("Date of admission: (d{2}/d{2}/d{4})")
dates = p.findall(sentence)
# ["12/08/2019", "12/05/2018"]
 

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

1. Я не могу воспроизвести ваш результат на своей машине — p.match(s) возвращает None для меня.

2. импорт re s = «Я пошел в больницу и поступил. Дата поступления: 12/08/2019, а дата операции: 15/09/2015. Дата поступления: 12/05/2018 принят Раджу» p = re.findall(«Дата поступления: (d{2}/d{2}/d{4})») печать(p)

3. Не могу использовать re.findall