2016-03-04 59 views
-2

我有这样的字符串:正则表达式从字符串中找到子

str1 = eval(sum(feat(57),feat(57),feat(66))/feat(57)); 
str2 = eval(sum(feat(47),feat(55),feat(86))); 
str3 = eval(feat(47)/sum(feat(51),feat(52),feat(53))); 
str4 = eval(feat(63)/sum(feat(57):feat(66))); 

我想写一个正则表达式来摆脱为:

str1_output = (feat(57),feat(57),feat(66)) 
str2_output = (feat(47),feat(55),feat(86)) 
str3_output = (feat(51),feat(52),feat(53)) 
str4_output = (feat(57):feat(66)) 

我以下列方式尝试:

output = re.findall(re.compile(r"sum.*"),str_name) 

这是给出正确的输出,除了str1。

请给我一种方法来找出所需的输出。

+0

你尝试过什么吗? – evuez

+0

是的,@evuez。我试图通过以下方式: re.findall(re.compile(r“sum。*”),str1) 这个正则表达式给出正确的输出,除了'str1' –

+0

好吧然后添加到您的问题,你会获得更多帮助:) – evuez

回答

0

我想你可以尝试

sum\((?:\([^()]*\)|.)*?\) 

它匹配sum及以下匹配对括号,不管它们之间。

实施例在regex101

问候。