2013-10-08 5 views
0

Я хотел бы удалить строки богатого текстового поля, содержащего число между двумя символами подчеркивания.Удалить строки, содержащие число между двумя символами подчеркивания

На RichTextBox, у меня есть следующие значения (примеры):

Z_OBJECTS 
Z_1_OBJECTS 
Z_DEBUG 
Z_1_DEBUG 
Z_2_DEBUG 
Z_TI_PROJECTS 
Z_1_TI_PROJECTS 

Я хочу, чтобы только линии Z_OBJECT, Z_TI_PROJECTS и Z_DEBUG, удаление строки, которые содержат 1_ и т.д.

Я использую эту функцию здесь, которая работает отлично, но я думаю, что Regex будет лучше:

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(); 
} 

То, что я получил в Regex это:

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

Который не удалит оставшуюся часть строки.

Цените любую помощь.

ответ

2

Просто продлить матч до конца линии:

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

И я думаю, что лучше, если вы используете \d+ (или [0-9]+), так как вы явно ищете числа между подчеркиванием.

+0

Любая причина, по которой вы используете. * Вместо \ w *? – sab669

+0

Спасибо Джерри. Это было именно то, что я искал. Cheers: D –

+0

@ user1189566 Вы никогда не знаете, какой символ может быть после этого последнего подчеркивания. – Jerry

Смежные вопросы