我有任务
“将单字符转换为'(' 重复成')'
例如将“ TAAreTheBest”转换为“)))())()()()”
从上方变成“)”的字符为T,A,E。
所以关键是我想使用REGEX找出重复的字符并将其替换为')'
这些是我之前尝试过的代码,对我不起作用
(\w)\1*
([a-zA-Z])\1*
\w{2,}
我对python非常陌生。我想了解更多关于REGEX的信息,因此我认为此任务可以使用regex来解决。所以请帮帮我。谢谢。
答案 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)