簡體   English   中英

如何編寫從開始到出現新行匹配字符串的正則表達式?

[英]How to write regex that matches string from begining to first new line occurence?

如何從開始到第一個新換行符匹配字符串。

如果TextBox1.Text值為

“ START:一個里程碑\\ r \\ n一個星期內就實現了第一個里程碑。”

這是我正在嘗試的:

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

此正則表達式只找到第一個單詞,因此將string的“ START:MileStone”替換為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());

IDEONE演示

結果: First milestone is achieved in a week.

正則表達式在這里效率不高,但是您可以自己檢查一下:

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.

要檢查輸入字符串是否為null或包含任何\\n

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

我不知道您是否喜歡我,但也許您正在練習Regex,並想知道如何實現它。 我是編碼方面的新手,但是我舉了您的例子,這就是我要實現的方式。

    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和\\ ra位。 [\\ w \\ s]等效於。 所以.*\\n也可以做

據我所知,您在第一個空格處停下來時無法工作,而您想在換行之前替換任何單詞或空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM