我是一个字符串
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]
请帮助我,因为我是新来的重新表达。
答案 0 :(得分:0)
只需将(
添加到否定字符类:
(?:\((?<n>[^(#]+)#(?<v>[^)]+)\))
此外,无需在字符类中转义(
,)
或#
。
对于您评论中更复杂的示例,您可以这样做:搜索
(?:\((?<n>[^(#]+)#(?<v>[^,]+)(?<r>,[^)]*)\))
并替换为
([${n}#${v}]${r})
(您可能需要将${n}
更改为Expresso用于命名反向引用的任何语法。
答案 1 :(得分:0)
要处理嵌套括号,您需要使用以下正则表达式:
(?:\((?<n>[^\#(]+)\#(?<v>[^\)]+)\))