0

我有一个字符串

SUM(Latest#3)

我写了一个正则表达式:-

(?:\((?<n>[^\#]+)\#(?<v>[^\)]+)\))

结果很好:-

n:Latest
v:3

但是当我将表达式更改为:-

Sqrt(Sum(Latest#3))

该值正在更改为:-

n: sum(Latest)
v: 3

我希望这个表达式检查直到最后一次出现,(即上述表达式的所需输出(Sqrt(Sum(Latest#3)))应该是这样的: -

n:Latest
v:[3]

请帮忙,因为我是正则表达式的新手。

4

2 回答 2

0

只需添加(到否定字符类:

(?:\((?<n>[^(#]+)#(?<v>[^)]+)\))

此外,无需转义()#在字符类中。

对于您评论中更复杂的示例,您可以这样做:搜索

(?:\((?<n>[^(#]+)#(?<v>[^,]+)(?<r>,[^)]*)\))

并替换为

([${n}#${v}]${r})

(您可能需要更改${n}Expresso 用于命名反向引用的任何语法。

于 2013-02-11T09:27:22.010 回答
0

要处理嵌套括号,您需要使用以下正则表达式:

(?:\((?<n>[^\#(]+)\#(?<v>[^\)]+)\))

于 2013-02-11T09:27:54.320 回答