我有一个令人尴尬的菜鸟问题,但我认为自己陷入困境,无法直截了当。
我想要一个正则表达式模式,仅在单词'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)
有什么想法吗?谢谢:)
答案 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.'