用正则表达式检查案例?

时间:2014-02-11 10:05:44

标签: python regex substitution

我可以使用什么正则表达式检查单词中是否有过多的大写字母? e.g。

AAAApples

该计划应与AAAApples匹配,因为一开始就有太多大写字母,并使用re.sub,将其替换为空字符串以留下Apples

因此,使用正则表达式:r'^[A-Z]*[a-z]'找到大写字母,并检查下一个是小写字母。然后我用空字符串替换它,以删除大写字母。但当然,这也会删除'Ap',留下'ples'。

我需要对正则表达式做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:4)

使用捕获组获取额外大写之后的字母。

re.sub(r'^[A-Z]+([A-Z][a-z])', r'\1', string)

这匹配大写字母序列,后跟大写字母和小写字母。括号使得最后两个字母的匹配放在捕获组中。替换\1替换为第一个捕获组的内容。

或者您可以使用前瞻:

re.sub(r'^[A-Z]+(?=[A-Z][a-z])', '', string)

前瞻指定模式仅在其后跟子模式匹配时才匹配,但该子模式不包含在匹配中。所以这匹配一系列大写字母,后面必须是大写字母,然后是小写字母。但是匹配中只包含大写字母的初始序列,然后由空字符串替换。

转到regular-expressions.info了解有关regexp的所有信息。