我在一个文件中有一些类似的数据。
Start
Status:good<>
Status:bad<>
Status:dfsf<>
Status:gosdfsfod<>
Status:dogEatsCat<>
Some randomdata
End<>只是状态信息的结尾,我只想得到最新的状态。这个是"dogEatsCat“。
这个正则表达式将向我返回所有状态。
Status:(.+?)<>但我只想要最后一个。
发布于 2011-08-09 01:31:08
编辑
或者,您可以获取所有匹配项并返回捕获的最后一个匹配项。这可以通过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);
}发布于 2011-08-09 01:30:31
然后在您的正则表达式之前使用贪婪捕获:
.*Status:(.+?)<>(您可能需要切换到单行模式,以便.也匹配换行符。)
或者,您可以使用从右到左模式进行正则表达式匹配。
这两个选项的工作示例都可以在here中找到。
发布于 2011-08-09 01:30:42
您可以使用已有的正则表达式,但只关注最后一次匹配。
https://stackoverflow.com/questions/6986045
复制相似问题