Как взять только первую строку из многострочного текста

Как я могу получить только первую строку многострочного текста с использованием регулярных выражений?

        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 цента:

[^\п] * (\ п | $)