使用正则表达式规范化文本

Normalizing text using regex

我正在处理推文,我希望将 aa aaaa aaah ahhh 的所有变体替换为单个表达式 'ah'。但是,使用我的代码,我还替换了我不想更改的单个 'a' 和 'and' 。

a = 'trying a aa aaaaaa aaaah and aaaahhh aaaaaaaahhh '
re.sub('a+h*','ah',a)

这样我得到:

Current output: 'trying ah ah ah ah ahnd ah ah '

但我想要的是:

Desired output: 'trying a ah ah ah and ah ah '

在您当前的表达式中 a+ 匹配一个 a 或更多。您希望比赛至少以 两个 个开始。

s = 'a ah aah aa
re.sub('aa+h*','ah',s) # 'a ah ah ah'

这可以用匹配 x 次或更多次出现的量词 {x,[y]} 概括,最多可选 y.

re.sub('a{2,}h*','ah',s)