简单而坚硬的正则表达式

时间:2011-08-08 17:28:02

标签: c# .net regex

我在文件中有类似的数据。

Start
Status:good<>
Status:bad<>
Status:dfsf<>
Status:gosdfsfod<>
Status:dogEatsCat<>
Some randomdata
End

&LT;&GT;只是状态信息的结束 我只是想获得最后的状态。这一个“dogEatsCat”。

这个正则表达式让我恢复了所有的状态。

Status:(.+?)<>

但我只是想得到最后一个。

3 个答案:

答案 0 :(得分:3)

然后在正则表达式之前使用贪婪捕获:

.*Status:(.+?)<>

(您可能需要切换到单行模式,以便.也匹配换行符。)

或者,您可以使用从右到左模式进行正则表达式匹配。

可以找到两个选项的工作示例here

答案 1 :(得分:2)

你可以使用你拥有的正则表达式,但只注意最后一场比赛。

答案 2 :(得分:1)

修改

或者,您可以获取所有匹配并返回捕获的最后一个匹配项。这可以完成like the following

Regex lastRegex = new Regex(@".*Status:(.+?)<>");
MatchCollection allMatches = lastRegex.Matches(sample);
if (allMatches.Count > 0)
{
    Console.WriteLine(allMatches[allMatches.Count-1].Groups[1].Value);
}