0

2 つのアンダースコアの間に数字が含まれるリッチテキスト ボックスの行を削除したいと思います。

リッチテキストボックスには、次の値があります (例):

Z_OBJECTS
Z_1_OBJECTS
Z_DEBUG
Z_1_DEBUG
Z_2_DEBUG
Z_TI_PROJECTS
Z_1_TI_PROJECTS

行のみを保持したいZ_OBJECT, Z_TI_PROJECTSand Z_DEBUG, を含む行を削除する1_など.

ここではこの関数を使用していますが、これは正常に機能しますが、正規表現の方が優れていると思います。

int total = 22;
for (int i = 1; i <= total; i++)
{
    List<string> finalLines = richTextBox1.Lines.ToList();
    finalLines.RemoveAll(x => x.StartsWith("Z_" + i + "_"));
    richTextBox1.Lines = finalLines.ToArray();
}

私が正規表現で得たのはこれです:

richTextBox1.Text = Regex.Replace(richTextBox1.Text, @"^Z_\d*_", "", RegexOptions.Multiline);

行の残りの部分は削除されません。

どんな助けにも感謝します。

4

1 に答える 1

2

残りの行の一致を拡張するだけです。

@"^Z_\d+_.*$"

アンダースコア間の数字を明示的に探しているので、\d+(または)を使用する方が良いと思います。[0-9]+

于 2013-10-08T21:04:00.363 に答える