如何在字符串中找到未确定模式的索引?

时间:2017-02-16 18:11:31

标签: python regex pandas

我想找到至少两个零的多次出现的索引,然后至少有两个零(例如,' 0011',' 00011',' 000111&# 39;依此类推),来自一个字符串(称为' S') 字符串 S 可能如下所示:

' 00111001100011'

我试过的代码只能发现' 0011'的出现,并奇怪地返回第一个' 1'的索引。例如,对于上面的 S ,我的代码返回2而不是0:

index = []
index = [n for n in range(len(S)) if S.find('0011', n) == n]

然后我尝试使用正则表达式但我发现的正则表达式无法表达我想要的特定数字(例如' 0'和' 1')

任何人都可以提出解决方案,并告诉我为什么我的第一个结果会返回' 1'而不是' 0'?很多人提前感谢!!!!!

1 个答案:

答案 0 :(得分:2)

在以下代码中,正则表达式定义了所需数字模式的单个实例。然后使用正则表达式的finditer迭代器来标识给定字符串S中的连续匹配。 match.start()给出了每个匹配项的起始位置,整个列表都返回到starts

S = '00111001100011'
r = re.compile(r'(0{2,}1{2,})')
starts = [match.start() for match in r.finditer(S)]
print(starts)
# [0, 5, 9]