Как взять только первую строку из многострочного текста
Как я могу получить только первую строку многострочного текста с использованием регулярных выражений?
string test = @"just take this first line
even there is
some more
lines here";
Match m = Regex.Match(test, "^", RegexOptions.Multiline);
if (m.Success)
Console.Write(m.Groups[0].Value);
Ответы
Ответ 1
string test = @"just take this first line
even there is
some more
lines here";
Match m = Regex.Match(test, "^(.*)", RegexOptions.Multiline);
if (m.Success)
Console.Write(m.Groups[0].Value);
.
часто рекламируется в соответствии с любым символом, в то время как это не совсем так. .
соответствует любому символу, только если вы используете опцию RegexOptions.Singleline
. Без этой опции он соответствует любому символу, кроме '\n'
(конец строки).
Это говорит о том, что лучшим вариантом будет:
string test = @"just take this first line
even there is
some more
lines here";
string firstLine = test.Split(new string[] {Environment.NewLine}, StringSplitOptions.None)[0];
Забастовкa > И еще лучше, версия Брайана Расмуссена:
string firstline = test.Substring(0, test.IndexOf(Environment.NewLine));
Ответ 2
Если вам просто нужна первая строка, вы можете сделать это, не используя регулярное выражение, подобное этому
var firstline = test.Substring(0, test.IndexOf(Environment.NewLine));
Насколько мне нравятся регулярные выражения, вам они действительно не нужны для всего, поэтому, если это не является частью какого-то более крупного упражнения с регулярным выражением, я бы пошел на более простое решение в этом случае.
Ответ 3
Попробуйте следующее:
Match m = Regex.Match(test, @".*\n", RegexOptions.Multiline);
Ответ 4
Мои 2 цента:
[^\п] * (\ п | $)