C# · 12月 27, 2021

c# – 正则表达式得到最后一次出现的模式

我有一个字符串,我需要选择最后一次出现的模式.
字符串是:

[[[1302638400000.0,0],[1302724800000.0,610.64999999999998],
[1302811200000.0,2266.6500000000001],[1303156800000.0,
4916.9300000000003],[1303329600000.0,6107.3199999999997],[1303934400000.0,9114.6700000000001]],[[1302638400000.0,20000.0],
[1302724800000.0,[1302811200000.0,
[1303156800000.0,
[1303934400000.0,20000.0]],20610.650000000001],
22266.650000000001],24916.93],26107.32],29114.669999999998],[1304452800000.0,30078.23]],[[1302718580000.0,0.0],[1302772440000.0,3.0532500000000073],[1303107093000.0,11.333250000000007],[1303107102000.0,21.753250000000008],[1303352295000.0,
24.584650000000003],[1303352311000.0,26.8766],[1303815010000.0,30.536599999999996],[1303815028000.0,27.703349999999993]]];

我使用的模式是:

\s\[\[(.*?)\]\]

不幸的是选择了第一次.突出显示的文字是所需的结果.最后几个方括号无关紧要,只需要最后一个数组.

更新:
如果可以帮你,那么编码就是在c#

解决方法 使用RightToLeft选项: Regex.Match(s,@”\[\[(.*?)\]\]”,RegexOptions.RightToLeft)

此选项是.NET正则表达式的独特之处,并且完全符合您的要求:从输入的结尾而不是开头进行搜索.特别要注意的是,非贪心?修饰剂正如你所料;如果你把它关掉,你会得到整个输入,但是你可以得到:

[1302718580000.0,24.584650000000003],27.703349999999993]]]