我在python中有一个字符串,我想将多个连续的重复字符替换为1。例如:
st = "UUUURRGGGEENNTTT"
print(st.replace(r'(\w){2,}',r'\1'))
Run Code Online (Sandbox Code Playgroud)
但是这个命令似乎不起作用,请有人帮忙找出这个命令有什么问题吗?
还有一种方法可以解决这个问题,但想了解为什么上述命令失败以及有什么方法可以纠正它:
print(re.sub(r"([a-z])\1+",r"\1",st)) -- print URGENT
Run Code Online (Sandbox Code Playgroud)
你需要使用正则表达式。所以你可以这样做:
import re
re.sub(r'[^\w\s]|(.)(?=\1)', '', 'UUURRRUU')
Run Code Online (Sandbox Code Playgroud)
结果是 UR。
这是我所拥有的快照:
对于这个正则表达式: (.)(?=.*\1)
(.) means: match any char except new lines (line breaks)
?=. means: lookahead every char except new line (.)
* means: match a preceding token
\1 means: to mach the result of captured group, which is the U or R ...
Run Code Online (Sandbox Code Playgroud)
然后用''替换所有匹配项
你也可以检查这个: lookahead
也检查这个工具我用它解决了我的正则表达式,它描述了一切,你可以从中学到很多东西: regexer