Извлечь текст с условиями в Python

Rahul Agarwal спросил: 31 июля 2018 в 09:51 в: python

Я исследовал лот и не смог найти регулярное выражение, где я могу достичь желаемого текста с нижеследующими условиями.

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

  1. Выбранный текст должен начинаться со списка слов. например: Apple, Banana, Orange, Pineapple.
  2. Это должно закончиться, когда встречается какое-либо из трех других слов и есть предыдущее число.
  3. Извлечение должно начинаться только тогда, когда перед ним есть предыдущее число.

Пример текста:

У меня есть 2 яблока в моей сумке, а яблоки - отличный тортик. вы шудате яблоки ежедневно. это очень хорошо для здоровья. 3 банана также хороши. Это уменьшает жир.

Ниже приведенный вывод

яблоки в моей сумке и яблоки великолепны ... хорошо для здоровья.

бананы также хороши. он уменьшает жир

Итак, если есть два ключевых слова, я хочу создать 2 файла и т. д.

Обновление того, что я пробовал:

Повторное выражение, которое я пробовал:

(?=(\d+)(\s?)apple)(.*)(?=\d+\s?banana:?s)

Regex I try

У меня есть 2 проблемы:

  1. В извлеченном тексте я не хочу 1-го числа

  2. Как сделать его динамическим, как если бы у меня было 4 слова, Мне не нужно писать много комбинаций, и если мы ищем яблоко, извлеченный текст для этого сохраняется в этой переменной

Версия Python: 3.5

Можете ли вы мне помочь с регулярным выражением для этого.

3 ответа

Rahul Agarwal ответил: 03 августа 2018 в 06:38
Это прекрасно работает, только проблема в том, что если я изменю свою строку на "У меня в сумке 2 яблока и 1 яблоко ..... хх ...", то это даст совпадение. Я смотрю, если мы ищем яблоки, он дает совпадение только тогда, когда он получает что-то кроме Apple
Julio ответил: 03 августа 2018 в 06:45
Будет ли это работать для вас? regex101.com/r/9gijrh/5
Rahul Agarwal ответил: 03 августа 2018 в 06:48
Да, это будет работать :)