c# - 正则表达式在另一个带括号的字符串中查找带括号的字符串

标签 c# regex

这是我的模式:(TABLE[0-9]+)\(((?<=\()(.*?)(?=\)))[(?=\))\)]

这是我正在查看的字符串:(TABLE3(1.6+TABLE1(2)))*TABLE2(1)*TABLE11(1)*(1.19017735023328)

我得到的是:

  • 表3(1.6+表1(2)
  • 表2(1)
  • 表11(1)

我需要第一个是:TABLE3(1.6+TABLE1(2))

我该怎么做?

最佳答案

使用 balancing groupTABLE[0-9]+ 之后构建:

TABLE[0-9]+\((?>[^()]|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\)

请参阅regex demo .

enter image description here

详细信息

  • TABLE[0-9]+ - 匹配TABLE和 1+ 位数字
  • \( - 开放(
  • (?>[^()]|(?<o>)\(|(?<-o>)\))* - 零次或多次出现
    • [^()] - 除 ( 之外的任何字符和)
    • | - 或
    • (?<o>)\( - 一个( (并增加 o 组的堆栈)
    • | - 或
    • (?<-o>)\) - 一个) (并减少 o 组的堆栈)
  • (?(o)(?!)) - 如果组o则匹配失败(触发回溯)堆栈不为空
  • \) - 一个)

关于c# - 正则表达式在另一个带括号的字符串中查找带括号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45920676/

相关文章:

java - 捕获可以匹配多种模式的字符串

regex - scala 在捕获组上拆分

javascript - 为什么我的正则表达式不能正常工作?

c# - ASP .NET MVC 表单字段验证(无模型)

java - 查找字符串中所有用点分隔的子字符串?

c# - Outlook VSTO 加载项与外部 C++ 应用程序之间的交互

c# - 如何使任务栏缩略图上的区域在 Windows 7 中显示为透明?

javascript - 在js中分割一个模式不匹配的字符串?

c# - 动态递归 lambda 表达式

c# - .NET Core 配置管理器,读取一个键里面有一个冒号的字典,给出一个关于值的奇怪的错误消息,这是预期的吗?