2013-08-09 2 views
0

У меня есть несколько файлов в папке со следующими условными обозначениями:Регулярное выражение раздеться файла

1. Size-2.125-in-0.3083-in.pdf 
2. Size-0.1-in-0.3083-in.something.pdf 
3. Size-2.11-in-0.3083-in.someotherthing.pdf 

Как вы можете видеть значения после запятой не фиксированного числа. Как я могу удалить это имя с помощью регулярных выражений. Мне также нужен только файл .pdf (в этом случае номер 1). Все остальные файлы, которые не похожи на 1 имя файла, должны быть проигнорированы.

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

Size-......-in-......-in.pdf 

Я использую C#.

Заранее спасибо

+0

'@ "Размер- \ S + -in- \ S + -в \ .pdf"' – falsetru

+0

работает отлично, спасибо! – user2483744

+0

Вы должны опубликовать регулярное выражение, которое вы пытались использовать, в следующий раз. – Jerry

ответ

0

Это: ^Size-([0-9]+\.[0-9]+)-in-([0-9]+\.[0-9]+)-in\.pdf$

должно быть достаточно. В группах захвата 1 и 2 у вас есть номера. Все остальное исправлено, поэтому я не фиксирую его.

Tester: http://regexr.com?35t0c

var rx = new Regex(@"^Size-([0-9]+\.[0-9]+)-in-([0-9]+\.[0-9]+)-in\.pdf$"); 
var match = rx.Match("Size-2.125-in-0.3083-in.pdf"); 

Console.WriteLine("Success: {0}", match.Success); 

if (match.Success) 
{ 
    Console.WriteLine("Full string: {0}, group 1: {1}, group 2: {2}", 
     match.Groups[0].ToString(), 
     match.Groups[1].ToString(), 
     match.Groups[2].ToString()); 
} 
Смежные вопросы