正则表达式括号python



继续使用正则表达式。这里有一个示例文本:

'[1 | Hi {name} | Hello {name} | Good morning {name}]其他文本{1 .|{name}| 3| 4} OTHER {5 |{name}| 6| 7}'

需要从中提取结构[1 | Hi {name} | hello {name} | Good morning {name}]and{1|{name}| 3| 4}and{5 |{name}| 6| 7}

re.findall(r's*({[^(/{name})].+})s*', message)

但是我写不出符合要求的正则表达式表达式{name}必须被忽略

这对于正则表达式来说是很棘手的,但是对于"解析"来说非常简单:

def top_level_parens(s):
stack = []
for n, c in enumerate(s):
if c in '({[':
stack.append(n)
elif c in ')}]':
m = stack.pop()
if not stack:
yield s[m:n+1]

result = list(top_level_parens(your_string))

假设父元素是适当平衡的,如果情况并非总是如此,请在"解析器"中添加额外的检查。

到目前为止,我的解决方案是

re.findall(r'({[^n].*?[^e]})|([.*?])', message)

最新更新