此问题已经在这里有了答案:
所以我有一些字符串,它们的长度为12,构成1和0的串联。下面是一些示例:
100010011100
001111110000
001010100011
我想隔离每个以1开头的段,其后跟任意数量的零,然后以1结尾。
因此,对于第一个字符串,我想要['10001','1001']
第二个字符串,我什么也不想返回
第三张清单,我想要['101','101','10001']
我已经尝试过使用正向前向和正向后向的组合,但是它不起作用。到目前为止,这是我想出的内容[(?<=1)0][0(?=1)]
我建议编写一个简单的正则表达式:r'10+1'
。然后使用python逻辑通过re.search()
查找每个匹配项。每次比赛之后,请在比赛开始后的位置开始下一个搜索。
无法使用正则表达式进行一次搜索。
def parse(s):
pattern = re.compile(r'(10+1)')
match = pattern.search(s)
while match:
yield match[0]
match = pattern.search(s, match.end()-1)
对于非正则表达式方法,您可以在1
上分割字符串。您想要的匹配项是结果列表中包含0
的任何元素,但不包括数组的第一个和最后一个元素。
代码:
myStrings = [
"100010011100",
"001111110000",
"001010100011"
]
for s in myStrings:
matches = ["1"+z+"1" for i, z in enumerate(s.split("1")[:-1]) if (i>0) and ("0" in z)]
print(matches)
输出:
#['10001', '1001']
#[]
#['101', '101', '10001']