如何编写匹配字符串从开头到第一个新行出现的正则表达式?

时间:2015-10-21 20:41:24

标签: c# regex

如何将字符串从开头到第一个新换行符匹配。

TextBox1.Text值为

的示例
  

' START:Milestone One \ r \ n第一个里程碑是在一周内实现的。'

以下是我的尝试: -

TextBox1.Text = Regex.Replace(TestBox1.Text, @"START: \w+\s?", "");

这个正则表达式只找到第一个字,因此取代了START:MileStone'与string.empty但离开' One'那里。

我需要在第一次换行前更换所有内容(包括换行Feed)。

4 个答案:

答案 0 :(得分:3)

您不需要正则表达式,只需使用IndexOf('\n') + 1

var t = "START: Milestone One\r\nFirst milestone is achieved in a week.";
Console.WriteLine(t.Substring(t.IndexOf('\n') + 1).Trim());

请参阅IDEONE demo

结果:First milestone is achieved in a week.

正则表达式在这里效率不高,但你可以自己检查一下:

var text = Regex.Replace(t, @"(?>.+\r?\n)\s*", string.Empty);

请参阅another demo

答案 1 :(得分:1)

您也可以使用LINQ:

string str = "START: Milestone One\r\nFirst milestone is achieved in a week.";

string newStr = String.Join("", str.SkipWhile(c => c != '\n').Skip(1));

Console.WriteLine(newStr); // First milestone is achieved in a week.

检查输入字符串是否为空或包含任何\n

string newStr = (str?.Any(c => c == '\n')).GetValueOrDefault() ? String.Join("", str.SkipWhile(c => c != '\n').Skip(1)) : str;

答案 2 :(得分:0)

我不知道你有没有像我这样的人,但也许你正在练习正则表达式,并想知道如何使它成为现实。我在编码方面很陌生,但我采取了你的榜样,这就是我将如何实现这一目标。

    private void button1_Click(object sender, EventArgs e)
    {
        string test = "START: Milestone One\r\nFirst milestone is achieved in a week.";

        string final = Regex.Replace(test, ".*\\n", "START: ").ToString();
        MessageBox.Show(final); // START: First milestone is achieved in a week.
    }

不确定这是否有帮助,但我想我会尝试。祝你有愉快的一天!

答案 3 :(得分:0)

修复你的正则表达式:

[\w\s]+\n

您可能需要使用\ n和\ r \ n。 [\ w \ s]相当于。所以.*\n也可以完成这项工作

当你在第一个空格处停下来时,你没有工作,而你想要替换任何单词或空格直到换行,据我所知。