我拿了一个像“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();
答案 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();