Регулярное выражение для добавления слова в переменную позицию в определенных предложениях - PullRequest
0 голосов
/ 16 марта 2019

У меня вопрос смущающего новичка, но я думаю, что застрял и не могу думать прямо.

Я хочу шаблон регулярного выражения, который добавит слово 'old' после слова 'year' или 'years', только если слово 'child' или 'children' также присутствует в предложении (aшаблон, который я обнаружил в моих данных).

Итак:

'Особенно у детей в возрасте от одного года до двенадцати лет в течение семи лет.'

будет иметь "старый"«добавлено после первого года», но не добавлено после второго, а также не после двух последних слов:

'Особенно у детей в возрасте одного года или до двенадцати лет, в течение семи лет. '

Мои модели до сих пор сумели ошибиться, например,

if 'child' or 'children' in i.split() and 'old' or 'olds' not in  i.split(): 
    i=re.sub(r'year' ,'year old',i)

Есть идеи?Спасибо:)

1 Ответ

1 голос
/ 16 марта 2019

См. Анализ в regex101 для объяснения: https://regex101.com/r/hTsPlF/1.

import re
i = 'Especially in children who are one year or up to twelve years old, for seven years.'
if re.search(r'(\bchild\b)|(\bchildren\b)',i):
    re.sub('(years{0,1}) (?!old)',r'\1 old ',i)

Что дает:

'Especially in children who are one year old or up to twelve years old, for seven years.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...