试图找到所有出现的字符
string1 = '%(example_1).40s-%(example-2)_-%(example3)s_'
所以输出中出现的所有’ – ”_’都不在括号中
['-', '_', '-', '_']
不需要关心嵌套括号
最佳答案 以下将为您提供输出:
>>> import re
>>> str = '%(example_1).40s-%(example-2)_-%(example3)s_'
>>> print list("".join(re.findall("[-_]+(?![^(]*\))", str)))
['-', '_', '-', '_']
这样做是因为它在str中找到包含’ – ‘和/或’_’的所有子串,而不是在括号中.由于这些是子字符串,我们通过连接和分割成列表来获得所有这些匹配字符.