python - 使用正则表达式消除单词内的重复并在末尾添加标签
问题描述
我对正则表达式很陌生,很难处理单词中的重复情况。我想要做的是匹配任何至少有三个连续重复字母的单词,例如“whateeever”、“cooool”和“haaaapy”,只保留一个重复的字母,然后添加一个“(elong)”到词尾。例如,“whateeever”变成“whatever(elong)”,“cooool”变成“col(elong)”,“haaaapy”变成“happy(elong)”。
以下是我所做的,但它只能消除重复,比如“whateeever”变成“whatever”:
def re_sub(pattern, repl):
return re.sub(pattern, repl, text, flags=FLAGS)
text = re_sub(r"(\S*?)(.)\2{2,}", r"\1\2")
然后我将代码稍微更改为以下代码,但输出变为“whate (elong) ver”。
text = re_sub(r"(\S*?)(.)\2{2,}", r"\1\2 (elong)")
我想知道是否有一种方法可以将“(elong)”移动到最后?非常感谢!
解决方案
最简单的是将正则表达式与字符串连接结合起来:
for w in ('whateeever', 'cooool','haaaapy'):
print re.sub(r'([a-zA-Z])\1+', r'\1', w)+' (elong)'
推荐阅读
- ios - Swift 中的 UITextField – 键入时未调用文本 didSet
- javascript - 使用 Javascript 切换显示内容
- excel - OLEObjects OptionButtons 事件处理
- sql - ORA-00904: "Q"."ITEM_NO": 无效标识符 - Oracle SQL 组按问题
- graphql - 当我向 chaskiq graphql 端点发送突变请求时,我得到“找不到数据”
- ios - Watchkit 通过按钮从模态控制器返回页面控制器,保持页面控制器滑动手势
- flutter - 解析嵌套的 json 失败颤振
- c - 当您调用克隆系统调用时,谁设置了 RIP 寄存器?
- node.js - 调用某些 API 时出现 Sails 错误:最初在 15 秒前调用的函数仍未实际执行
- tensorflow - 为什么在前向传递中执行“梯度”节点?