【发布时间】:2017-09-12 03:56:39
【问题描述】:
我有这个字符串:
TABLEXY1((INITIALPARAM2*117.3/MADAD(2)),INITIALPARAM1+1)*PARAM2/100*(TABLE12(INITIALPARAM3)*PARAM3-(TABLE12(INITIALPARAM4)*PARAM4))"
我需要能够获取 TABLEXY1 及其括号中的值。 可能的值有:
(数字)
(表达式)
(数字,数字)
(数字,表达式)
(表达式,表达式)
(表达式,数字)
我不知道需要多少括号。
我试过了
TABLEXY1\(((?<=\()(.*?)(?=\)))\)
但它给了我
TABLEXY1((INITIALPARAM2*117.3/MADAD(2)
不是我需要的
TABLEXY1((INITIALPARAM2*117.3/MADAD(2)),INITIALPARAM1+1)
【问题讨论】:
-
使用
TABLEXY1\((?:[^()]+|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\) -
虽然 .net 正则表达式不支持递归,但它可以将嵌套结构与平衡结构相匹配。
标签: c# regex parentheses