Python:解析字符串[重复]

问题描述 投票:0回答:2

此问题已经在这里有了答案:

所以我有一些字符串,它们的长度为12,构成1和0的串联。下面是一些示例:

100010011100
001111110000
001010100011

我想隔离每个以1开头的段,其后跟任意数量的零,然后以1结尾。

因此,对于第一个字符串,我想要['10001','1001']

第二个字符串,我什么也不想返回

第三张清单,我想要['101','101','10001']

我已经尝试过使用正向前向和正向后向的组合,但是它不起作用。到目前为止,这是我想出的内容[(?<=1)0][0(?=1)]

python regex
2个回答
0
投票

我建议编写一个简单的正则表达式:r'10+1'。然后使用python逻辑通过re.search()查找每个匹配项。每次比赛之后,请在比赛开始后的位置开始下一个搜索。


0
投票

无法使用正则表达式进行一次搜索。

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)

0
投票

对于非正则表达式方法,您可以在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']
© www.soinside.com 2019 - 2024. All rights reserved.