python - 组合两个具有不同分组要求的正则表达式
问题描述
我有两个不同的重复字符替换规则,我想将它们组合成一个正则表达式。
我可以在 python 3.x 中做到这一点:
import re
s = r'http://www.google.com/search=ooo-eeee-aa-ii-uuuu'
aiu=re.compile(r'(([aiu])\2{1,})')
eo=re.compile(r'(([eo])\2{2,})')
eo.sub(r'\2',aiu.sub(r'\2',s))
如果有一个主要的性能提升(这个操作将被应用数百万次),是否有一个单一的正则表达式可以实现这两个实现的目标(不必像我上面那样嵌套调用)。
解决方案
您可以将这两个替换与交替模式结合起来。替换字符串可以同时存在\1
,\2
因为其中一个是空的并且无论如何都不会影响输出。
aeiou = re.compile(r'([aiu])\1{1,}|([eo])\2{2,}')
aeiou.sub(r'\1\2', s)
推荐阅读
- python - 在 Python 中分离列表中的元组
- tensorflow - 如何使用 keras.ImageDataGenerator() 平衡数据
- gmail-api - Gmail .NET API 功能
- linux - 如何在不合并的情况下强制更改原始主机?
- tensorflow - RNN 文本生成:如何平衡训练/测试丢失与验证丢失?
- android - 应用程序可能在其主线程上做了太多工作。当我午餐 Fragment 或 Activity 并且在它们内部我都在使用 firebase
- python - Python 正则表达式删除括号内的空格
- javascript - 向地图添加标记
- mysql - 创建 Aurora 集群的每日临时克隆
- c++ - Basler 相机和 DIPlib