Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式提取文本上的最后一行_C#_Regex_Line - Fatal编程技术网

C# 使用正则表达式提取文本上的最后一行

C# 使用正则表达式提取文本上的最后一行,c#,regex,line,C#,Regex,Line,我只需要使用正则表达式从多行字符串中提取最后一行。我试图使用如下@“\n(.*?$”这样的单行模式,但不幸的是,它从第二行开始提取文本。有什么提示吗 谢谢 像这样的东西怎么样 @"([^\n\r]*)$" 这意味着在字符串结束前匹配所有不是换行符的字符 好吧,当我考虑它时,当你不使用DOTALL修饰符时,这应该是好的 @"(.*)$" 没有此修饰符,与换行符不匹配。因此,开始时不需要\n。在不使用正则表达式的情况下尝试 string literal = @"I am the best";

我只需要使用正则表达式从多行字符串中提取最后一行。我试图使用如下@“\n(.*?$”这样的单行模式,但不幸的是,它从第二行开始提取文本。有什么提示吗


谢谢

像这样的东西怎么样

@"([^\n\r]*)$"
这意味着在字符串结束前匹配所有不是换行符的字符

好吧,当我考虑它时,当你不使用DOTALL修饰符时,这应该是好的

@"(.*)$"
没有此修饰符,
与换行符不匹配。因此,开始时不需要
\n

在不使用正则表达式的情况下尝试

string literal = @"I 
am
the
best"; //With \n

string[] lines = literal.Split(new string[] { "\n" }, StringSplitOptions.None);
string lastLine = lines[lines.Length - 1];
Console.WriteLine(lastLine); //Should print "best"
使用正则表达式:

Match m = Regex.Match(literal, @"\n*.+$");
Console.WriteLine(m.Value); //Should be @"\nbest"

你能用
.Split(..)
方法
字符串
来做吗?我宁愿用正则表达式。我考虑过这个问题,如果没有可行的解决方案,我可能会最终使用它。“我宁愿使用更复杂和资源密集型的解决方案”。你的问题实际上与你的上下文中的C无关。好的。我已经发布了一个没有正则表达式的答案。虽然从复杂性的角度来看,拆分字符串是一个更好的解决方案,但这并没有回答OP提出的问题。编辑后的答案是@George所说的。是的,第二个版本有效。我不得不选择另一个答案,因为它首先做出了回应。谢谢