2013-10-08 53 views
0

我想删除包含两个下划线之间的数字的richtextbox行。删除包含两个下划线之间的数字的行

在RichTextBox的,我有以下的值(举例):

Z_OBJECTS 
Z_1_OBJECTS 
Z_DEBUG 
Z_1_DEBUG 
Z_2_DEBUG 
Z_TI_PROJECTS 
Z_1_TI_PROJECTS 

我想只保留线Z_OBJECTZ_TI_PROJECTSZ_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); 

这不会删除剩下的行。

感谢任何帮助。

回答

2

简单地延长匹配该行的其余部分:

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

而且我认为这是更好,如果你使用\d+(或[0-9]+),因为你明确地寻找下划线之间的数字。

+0

你使用任何理由。*而不是\ w *? – sab669

+0

谢谢杰瑞。 这正是我所期待的。干杯:D –

+0

@ user1189566你永远不知道最后一个下划线后可能有什么符号。 – Jerry