删除具有重复字符的字符串[Python]
我需要确定字符串是否由某个重复字符组成,例如删除具有重复字符的字符串[Python],python,regex,Python,Regex,我需要确定字符串是否由某个重复字符组成,例如eeeeee、55555或 我知道这个正则表达式'e{1,15}可以匹配eeeee,但它显然不能匹配555。我尝试了[a-z0-9]{1-15},但它甚至匹配了我不需要的字符串,比如Hello 解决方案不必是正则表达式。我想不出任何其他方法来实现这一点。字符串由单个重复字符组成,当且仅当其中所有字符都相同时。通过构造一组字符串:set('55555'),可以很容易地测试这一点 当且仅当集合的大小为1时,所有字符都相同: >>> len
eeeeee
、55555
或代码>
我知道这个正则表达式'e{1,15}
可以匹配eeeee
,但它显然不能匹配555
。我尝试了[a-z0-9]{1-15}
,但它甚至匹配了我不需要的字符串,比如Hello
解决方案不必是正则表达式。我想不出任何其他方法来实现这一点。字符串由单个重复字符组成,当且仅当其中所有字符都相同时。通过构造一组字符串:set('55555')
,可以很容易地测试这一点
当且仅当集合的大小为1时,所有字符都相同:
>>> len(set('55555')) == 1
True
>>> len(set('Hello')) == 1
False
>>> len(set('')) == 1
False
如果您也希望允许空字符串(设置大小为0),则使用当且仅当字符串中的所有字符都相同时,字符串由单个重复字符组成。通过构造一组字符串:set('55555')
,可以很容易地测试这一点
当且仅当集合的大小为1时,所有字符都相同:
>>> len(set('55555')) == 1
True
>>> len(set('Hello')) == 1
False
>>> len(set('')) == 1
False
如果您也希望允许空字符串(设置大小为0),则使用您不必为此使用正则表达式,确定字符串中所有字符是否相同的测试将产生所需的输出:
s = "eee"
assert len(s) > 0
reference = s[0]
result = all([c==reference for c in s])
或者如Thomas所示,使用set
,这可能是一种更好的方法。您不必为此使用正则表达式,通过测试确定字符串中的所有字符是否相同,将产生所需的输出:
s = "eee"
assert len(s) > 0
reference = s[0]
result = all([c==reference for c in s])
或者如Thomas所示,使用set
,这可能是更好的方法。Regex解决方案(通过re.search()
函数):
^(.)\1+$
:
()
-捕获任何字符
\1+
-反向引用先前捕获的组,重复一次或多次
正则表达式解决方案(通过re.search()
函数):
^(.)\1+$
:
()
-捕获任何字符
\1+
-反向引用先前捕获的组,重复一次或多次
可能的副本。您可以很容易地根据接受的anser调整正则表达式,以满足您的需要。的可能副本。您可以很容易地根据接受的anser调整正则表达式以满足您的需要。