正则表达式在括号上分割获得双重结果

时间:2014-05-29 20:19:22

标签: c# regex

我拿了一个像“4 + 5 +(7 - 9)+ 8”这样的字符串并尝试拆分括号以获得一个包含4 + 5,(7-9),+ 8的列表。所以即时使用正则表达式字符串下面。但它给了我4 + 5,(7-9),7-9,+ 8.希望它只是简单的东西。感谢。

 List<string> test = Regex.Split("4 + 5 + ( 7 - 9 ) + 8", @"(\(([^)]+)\))").ToList();

2 个答案:

答案 0 :(得分:3)

删除正则表达式中的额外括号:

(\(([^)]+)\)) // your regex
(           ) // outer parens
 \(       \)  // literal parens match
   (     )    // extra parens you don't need
    [^)]+     // one or more 'not right parens'

额外的parens为“文字内部”创建匹配,这是您看到的额外7 - 9

所以你应该:

@"(\([^)]+\))"

答案 1 :(得分:1)

List<string> test = Regex.Split("4 + 5 + ( 7 - 9 ) + 8", @"(\([^)]+\))").ToList();