python使用正则表达式中的变量作为重复量

sma*_*c89 0 python regex

比方说,如果它包含一定数量的某个字符,我想匹配一个子字符串.但是,我不知道这个角色的确切数量,但我知道这不是负面的.我怎么写这个正则表达式?

from sys import stdin
import re
k = int(raw_input())
combo = re.compile(r'(?=(.*1.*){k})')
print [ s for s in combo.findall(stdin.readline().strip()) ]
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是这样,我该怎么办?

编辑:示例输入:k = 2 string = 01010

预期输出:"101","0101","1010","01010"

所以在每个子字符串中,它包含2个字符'1'

geo*_*org 5

正则表达式是字符串,所以随意使用您喜欢的字符串格式构造:

combo = re.compile(r'(?=(.*1.*){%d})' % k)
Run Code Online (Sandbox Code Playgroud)

至于你编辑过的问题,我找不到用regexp做到这一点的简单方法,下面怎么做?

def all_substrings(s):
    m = len(s)
    for i in range(m):
        for j in range(i, m):
            yield s[i:j+1]

s = '01010'
print [x for x in all_substrings(s) if x.count('1') == 2]
Run Code Online (Sandbox Code Playgroud)