Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除具有重复字符的字符串[Python]_Python_Regex - Fatal编程技术网

删除具有重复字符的字符串[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调整正则表达式以满足您的需要。