使用正则表达式在字符串中查找两个相同的字符

时间:2009-12-08 17:20:21

标签: python regex replace

这是参考我在here

之前提出的问题

我在这个问题上得到了问题的解决方案,但最终需要使用正则表达式来处理这一特定部分。

我需要一个正则表达式来搜索并替换一行中两个元音相同的实例的字符串,所以“take”中的“oo”或“bees”中的“ee”将其替换为被替换的一个字母和一个:

预期行为的一些例子:

"took"应该成为"to:k"

"waaeek"应该成为"wa:e:k"

"raaag"应该成为"ra:ag"

感谢您的帮助。

4 个答案:

答案 0 :(得分:7)

试试这个:

re.sub(r'([aeiou])\1', r'\1:', str)

答案 1 :(得分:1)

搜索([aeiou])\1并将其替换为\1:

我不知道python,但你应该能够使用/([aeiou])\1/gi

这样的正则表达式不敏感和全局

答案 2 :(得分:0)

您需要在搜索表达式中使用反向引用。尝试使用以下内容:([a-z])+\1(或([a-z])\1只需加倍)。

答案 3 :(得分:0)

什么不该做: 如上所述,这将匹配任何两个元音。留下这个答案作为不该做的事情的一个例子。正确答案(在这种情况下)是使用许多其他答案中提到的反向引用。

import re

data = ["took","waaeek","raaag"]

for s in data:
  print re.sub(r'([aeiou]){2}',r'\1:',s)

这恰好匹配集[aeiou]中任何成员的两次出现{2}。并将其替换为元音,用parens()捕获并通过\ 1放置在子字符串中,然后放入':'

输出:

to:k
wa:e:k
ra:ag