在某些句子中以可变位置添加单词的正则表达式

时间:2019-03-16 13:01:50

标签: python regex

我有一个令人尴尬的菜鸟问题,但我认为自己陷入困境,无法直截了当。

我想要一个正则表达式模式,仅在单词'old''year''years''child'之后才添加单词'children'句子中也存在(我在数据中检测到的模式)。

所以:

“特别是对于1岁或不满12岁的儿童,长达7年。”

在第一个“ year”之后将添加“ old”,但在第二个“ year”之后将不会再添加一个,也不会在最后两个单词之后添加:

“特别是对于岁或12岁以上,长达7岁的孩子。”

到目前为止,我的模式都设法弄错了,例如

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

有什么想法吗?谢谢:)

1 个答案:

答案 0 :(得分:1)

有关解释,请参见对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.'