我正在尝试使用python的re模块执行某些模式匹配

时间:2018-12-13 20:40:59

标签: python regex pattern-matching

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."

问题:

如果模式包含字符aihi,请用*\*替换接下来的三个字符。

我已经尝试过多次使用re.search()和re.sub(),但是我无法弄清替换下三个字符的逻辑。

预期输出:

如果我能阻止一颗心的破裂,

我不会徒劳地生活;

如果我能使自己的生活轻松一点,那么* \ *

或者冷静一点痛苦,

或帮助一名辉腾* \ * ng罗宾

再次打招呼* \ * est,

我不会徒劳的。

我的代码:

match_res = re.search(r"ai|hi",poem).group()

我无法提取“ hi” 我也无法获得所需的输出

1 个答案:

答案 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}匹配任意三个字符(换行符除外)