Python 正则表达式以查找字符串是否包含所有数字0-9,无论其顺序如何

Python 正则表达式以查找字符串是否包含所有数字0-9,无论其顺序如何,python,regex,Python,Regex,正则表达式以查找字符串是否包含所有数字0-9,无论其顺序如何。 有人能帮忙吗 假设我有一个字符串——“01230912747238507156”,它包含0-9之间的所有字符。所以我应该明白 您可以使用这样的计数器 string = "01230912747235071568" cnt = 0 for i in range(0,10): if str(i) in string: print(i) cnt += 1 print(cnt) 如果您真的在寻找

正则表达式以查找字符串是否包含所有数字0-9,无论其顺序如何。 有人能帮忙吗


假设我有一个字符串——“01230912747238507156”,它包含0-9之间的所有字符。所以我应该明白

您可以使用这样的计数器

string = "01230912747235071568"

cnt = 0
for i in range(0,10):
    if str(i) in string:
        print(i)
        cnt += 1

print(cnt)
如果您真的在寻找正则表达式解决方案(学习目的?),您可以使用多个lookahead(不可取,真正冗余的代码):

即:

(?=not_one zero or more times, then one)...

您只需使用
.isdigit()
过滤非数字,它将返回布尔值


这有一个局限性,即只能处理连续的数字/整数。

您可以使用Python的内置函数


您还可以将
[0,1,2,3,4,5,6,7,8,9]
替换为
列表(范围(0,10))
此解决方案可以处理各种字符串,而不仅仅是数字字符

s1 = 'ABC0123091274723507156XYZ' # without 8
s2 = 'ABC0123091274723507156XYZ8'

len(set("".join(re.findall(r'([\d])', s1)))) == 10 # False
len(set("".join(re.findall(r'([\d])', s2)))) == 10 # True
工作原理:


使用regex
findall
查找字符串中的所有数字。将所有匹配项连接到一个字符串,并通过将其放入
集中获得唯一字符。然后计算
集合的长度。如果所有数字都表示为10。

问题一点也不清楚,您想要实现什么,字符串的示例是什么?不使用正则表达式比使用正则表达式要容易得多。只需编写一些Python来迭代字符串中的每个字符,并记住它是否看到了每个数字0-9。为什么要使用正则表达式进行此操作?假设我有一个字符串-“012309127473507156”,它包含0-9之间的所有字符。所以我应该是真的。012309127473507156,没有8,没有循环。我提到before@AbhisekRoy:查看更新后的答案。我只想检查字符串中的任何位置是否都有数字0-9。它必须用正则表达式编写。我正在用Python.TypeError编码:&:'str'和'int'的操作数类型不受支持这是您的代码给出的错误@Jan@AbhisekRoy您的问题中没有“无循环”。仅当字符串不包含任何非数字字符时,该字符串才包含所有数字。我只需要找出它是否在字符串中的某个地方有所有的数字0,1,2,3,4,5,6,7,8,9或其他。
s = "0123091274723507156"
n = [0,1,2,3,4,5,6,7,8,9]
print(all(str(i) in s for i in n))
s1 = 'ABC0123091274723507156XYZ' # without 8
s2 = 'ABC0123091274723507156XYZ8'

len(set("".join(re.findall(r'([\d])', s1)))) == 10 # False
len(set("".join(re.findall(r'([\d])', s2)))) == 10 # True