Text = " If I can stop one heart from breaking,
I shall not live in vain;
If I can ease one life the aching,
Or cool one pain,
Or help one fainting robin
Unto his nest again,
I shall not live in vain."
问题:
如果模式包含字符ai
或hi
,请用*\*
替换接下来的三个字符。
我已经尝试过多次使用re.search()和re.sub(),但是我无法弄清替换下三个字符的逻辑。
预期输出:
如果我能阻止一颗心的破裂,
我不会徒劳地生活;
如果我能使自己的生活轻松一点,那么* \ *
或者冷静一点痛苦,
或帮助一名辉腾* \ * ng罗宾
再次打招呼* \ * est,
我不会徒劳的。
我的代码:
match_res = re.search(r"ai|hi",poem).group()
我无法提取“ hi” 我也无法获得所需的输出
答案 0 :(得分:1)
如果您使用正向后视,则re
模块将对此有效:
your_text = "If I can ease one life the aching,"
re.sub("(?<=[ah]i).{3}", "***", your_text)
输出
'If I can ease one life the achi***'
说明
(?<=[ah]i)
是正向查找,仅当前两个字符与模式[ah]i
匹配时才会匹配
.{3}
匹配任意三个字符(换行符除外)