Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 - Fatal编程技术网

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

C# 如何编写从开始到第一个新行出现匹配字符串的正则表达式?,c#,regex,C#,Regex,如何将字符串从开头匹配到第一个换行符 如果TextBox1.Text值为 '开始:里程碑一\r\n一周内完成第一个里程碑。' 以下是我正在尝试的:- TextBox1.Text = Regex.Replace(TestBox1.Text, @"START: \w+\s?", ""); 此正则表达式仅查找第一个单词,因此将“开始:里程碑”替换为string.empty,但保留“One” 我需要在第一个换行符之前替换所有内容(包括换行符)。您不需要正则表达式,只需使用IndexOf('\n')+1

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

如果TextBox1.Text值为

'开始:里程碑一\r\n一周内完成第一个里程碑。'

以下是我正在尝试的:-

TextBox1.Text = Regex.Replace(TestBox1.Text, @"START: \w+\s?", "");
此正则表达式仅查找第一个单词,因此将“开始:里程碑”替换为string.empty,但保留“One”


我需要在第一个换行符之前替换所有内容(包括换行符)。

您不需要正则表达式,只需使用
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());

结果:
第一个里程碑在一周内完成。

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

var text = Regex.Replace(t, @"(?>.+\r?\n)\s*", string.Empty);
请参见,您也可以使用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;

我不知道你是否喜欢我,但也许你正在练习正则表达式,想知道如何用它来实现它。我对编码非常陌生,但我举了你的例子,这就是我如何做到的

    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.
    }

不确定这是否有助于你,但我想我会试试。祝你今天愉快

正在修复您的正则表达式:

[\w\s]+\n
您可能需要玩一下\n和\r。[\w\s]相当于。因此,
*\n
也将完成这项工作


就我所知,当您在第一个空格处停止时,您的工作不起作用,而您希望在换行之前替换任何单词或空格。

var lines=“Milestone One\r\n第一个里程碑在一周内实现”。Split(“\r\n.tocharray(),StringSplitOptions.removeMptyEntries)
值得一提的是,如果
t
为空或者新行字符不存在,会发生什么情况。@Erik:我认为
t
不能为空,它是
TextBox.Text
,我认为它总是
string.Empty
。但也许。。。如果
\n
不存在,则只返回原始字符串。我明白了。我认为提到应该进行空检查或抛出异常对未来的读者可能有用。同样地,我认为如果没有找到新行char,那么显式地声明将会发生什么是很好的。