我希望为下面的情况编写一个Python2正则表达式。我还没有做过可行性分析
the quick [brown_1=fox] jumps over the [lazy=dog]["[brown_1=fox]", "[lazy=dog]"]基本上,我希望匹配所有的[\w+=.*]子字符串,并将它们输出到列表中。我想在这里使用的API似乎是re.findall,但是在Python2中正确的正则表达式是什么呢?
在这种情况下,子字符串[brown_1=fox]和[lazy=dog]分别匹配regex:[\w+=.*]。
注意:允许使用以下输入字符串::the quick [brown=[fox[a=b][c=d]]] jumps over。也就是说,在与[\w+=.*]匹配的单个元素中,可能会再次出现[、]和=字符。但是保证在第一个“等于”字符之前,只有字母-数字字符和下划线。
发布于 2018-11-27 01:06:03
发布于 2018-11-27 01:00:16
我想你需要一个简单的状态机
def parse(s):
stack = []
parts = []
current = []
for c in s:
if c == "[":
current.append("")
stack.append(c)
elif c == "]" and stack:
stack.pop()
parts.insert(0,current.pop())
elif stack:
current[-1] += c
return parts
print(parse("the quick [brown=[fox[a=b][c=d]]] jumps over"))
# ['brown=', 'fox', 'c=d', 'a=b']https://stackoverflow.com/questions/53491190
复制相似问题