c# - 正则表达式在括号上分割得到双重结果

标签 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();

最佳答案

删除正则表达式中多余的括号:

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

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

所以你应该:

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

关于c# - 正则表达式在括号上分割得到双重结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23942217/

相关文章:

c# - 用哈希表中的值替换占位符

python - Python 中用于匹配文件夹中文件的正则表达式

Mysql查询,包含一个字符串,然后是电子邮件中的3个数字

java - 正则表达式中的 AND 运算符

c# - 使用 System.IO.Packaging.Package 在内存中创建 ZIP 文件

c# - 参数附近的语法不正确

javascript - Android native 浏览器通过用户代理正则表达式进行检测

用于匹配 VT100 转义序列的 Python 正则表达式

c# - 好的示例.Net Windows服务可报告错误

c# - 在 asp.net C# 中动态创建/复制 Div