我有
s = '10001001110100000'
我想提取所有匹配('0'
之间的'1'
包括边缘的'1'
)。对于这个例子,结果应该是[10001, 1001, 101]
我使用PyParsing编写了一个简单的表达式,但我很惊讶,因为PyParsing只返回第一个匹配项,所以很难找到解决方案
到目前为止我的代码是:
from pyparsing import Group, OneOrMore, ZeroOrMore
s = '10001001110100000'
expr = ('1' + OneOrMore('0') + '1')
rule = ZeroOrMore(Group(expr))
print(rule.parseString(str).asList())
由此产生:
[['1', '0', '0', '0', '1']]
预期结果:
['10001', '1001', '101']
如何获得其他匹配
这个问题是PyParsing特有的
一种简单的方法是在列表中移动时循环并跟踪最后一个
"1"
:Regex不适合这样的任务,因为匹配项重叠,但是} 方法上似乎有一个重叠选项:
PyParsing
在^{相关问题 更多 >
编程相关推荐