this is my patten: (TABLE[0-9]+)\(((?<=\()(.*?)(?=\)))[(?=\))\)]
这是我的彭定康:(表[0 - 9]+)\(((? < = \()(. * ?)(? = \)))((? = \))\]
this is the string i'm looking at: (TABLE3(1.6+TABLE1(2)))*TABLE2(1)*TABLE11(1)*(1.19017735023328)
这是我正在查看的字符串:(表3(1.6+表1(2)))*表2(1)*表11(1)*(1.19017735023328)
what i get are:
我得到的是:
- TABLE3(1.6+TABLE1(2)
- TABLE3(1.6 +表1(2)
- TABLE2(1)
- 表二(1)
- TABLE11(1)
- TABLE11(1)
i need the first one to be: TABLE3(1.6+TABLE1(2))
我需要第一个为:TABLE3(1.6+TABLE1(2))
how can i do that?
我怎么做呢?
1 个解决方案
#1
3
Use a balancing group construct after TABLE[0-9]+
:
使用表[0-9]+后的平衡组结构:
TABLE[0-9]+\((?>[^()]|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\)
See the regex demo.
查看演示正则表达式。
Details
细节
-
TABLE[0-9]+
- matchesTABLE
and 1+ digits - 表[0-9]+ -匹配表和1+位
-
\(
- an open(
- \(-一个开放的(
-
(?>[^()]|(?<o>)\(|(?<-o>)\))*
- zero or more occurrences of-
[^()]
- any char but(
and)
- [^()]——任何字符,但(和)
-
|
- or - |——或者
-
(?<o>)\(
- a(
(and increments the stack of theo
group) -
(?
)\(- a(增加o组的堆栈) -
|
- or - |——或者
-
(?<-o>)\)
- a)
(and decrements the stack of theo
group) - (?<-o>)\ a)(对o组的堆栈进行递减)
-
- (? >[^())|(? < o >)\(|(? < o >)\))* -零个或多个出现[^()]——任何字符,但(和)| -或(? < o >)\(-((和增量的堆栈o组)|——或者(? < o >)\)- a)(和堆栈的精神性的o组)
-
(?(o)(?!))
- fail the match (triggers backtracking) if Groupo
stack is not empty - (?(o)(?!)——如果组o堆栈不是空的,则失败匹配(触发回溯)
-
\)
- a)
. - \)- a)。
#1
3
Use a balancing group construct after TABLE[0-9]+
:
使用表[0-9]+后的平衡组结构:
TABLE[0-9]+\((?>[^()]|(?<o>)\(|(?<-o>)\))*(?(o)(?!))\)
See the regex demo.
查看演示正则表达式。
Details
细节
-
TABLE[0-9]+
- matchesTABLE
and 1+ digits - 表[0-9]+ -匹配表和1+位
-
\(
- an open(
- \(-一个开放的(
-
(?>[^()]|(?<o>)\(|(?<-o>)\))*
- zero or more occurrences of-
[^()]
- any char but(
and)
- [^()]——任何字符,但(和)
-
|
- or - |——或者
-
(?<o>)\(
- a(
(and increments the stack of theo
group) -
(?
)\(- a(增加o组的堆栈) -
|
- or - |——或者
-
(?<-o>)\)
- a)
(and decrements the stack of theo
group) - (?<-o>)\ a)(对o组的堆栈进行递减)
-
- (? >[^())|(? < o >)\(|(? < o >)\))* -零个或多个出现[^()]——任何字符,但(和)| -或(? < o >)\(-((和增量的堆栈o组)|——或者(? < o >)\)- a)(和堆栈的精神性的o组)
-
(?(o)(?!))
- fail the match (triggers backtracking) if Groupo
stack is not empty - (?(o)(?!)——如果组o堆栈不是空的,则失败匹配(触发回溯)
-
\)
- a)
. - \)- a)。