如何使用正则表达式查找字符串中的重复字符

时间:2018-10-17 15:06:47

标签: python regex python-3.x

我有任务

  

“将单字符转换为'('   重复成')'

     

例如将“ TAAreTheBest”转换为“)))())()()()”

从上方变成“)”的字符为T,A,E。

  

所以关键是我想使用REGEX找出重复的字符并将其替换为')'

这些是我之前尝试过的代码,对我不起作用

(\w)\1* 
([a-zA-Z])\1*
\w{2,}

我对python非常陌生。我想了解更多关于REGEX的信息,因此我认为此任务可以使用regex来解决。所以请帮帮我。谢谢。

1 个答案:

答案 0 :(得分:0)

我希望不要从一个sub

开始
import re

string = 'baTAAreTheBestaaaaabbbbaaaaaaa'

#1 replace chars that occur more then twice
tmp = ''
while tmp != string:
  tmp = string
  string = re.sub(r'(\w)(((.*)\1){2,})', r')\2', tmp)

#2 replace consecutive pairs (dunno why this are not handled by 3rd replace)
string = re.sub(r'(\w)\1', r'))', string)
#3 replace separate pairs
string = re.sub(r'(\w)(.*)\1', r')\2)', string)
#3 replace unique chars
string = re.sub(r'\w', '(', string)
print(string)