2009-12-15 3 views
1

Мой файл имеет определенные данные, такие как ::C#, как написать регулярное выражение

/Страницы 2 0 R/тип/Каталог/AcroForm

/Count 1/Дети [3 0 R]/Тип/Страницы

/Фильтр/FlateDecode/Длина 84

Что такое регулярное выражение, чтобы получить этот выход ..

Pages Type Catalog AcroForm Count Kids Type Pages Filter FlateDecode Length 

Я хочу получить строку после '/' & перед вторым '/' или пробелом.

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

ответ

5
class Program 
{ 
    static void Main() 
    { 
     string s = @"/Pages 2 0 R/Type /Catalog/AcroForm 
/Count 1 /Kids [3 0 R]/Type /Pages 
/Filter /FlateDecode/Length 84"; 

     var regex = new Regex(@"[\/]([^\s^\/]*)[\s]"); 
     foreach (Match item in regex.Matches(s)) 
     { 
      Console.WriteLine(item.Groups[1].Value); 
     } 

    } 
} 

Примечания: не используйте Регул r для анализа файлов PDF.

+0

Из любопытства, почему бы и нет? – cwap

+3

Поскольку спецификация PDF составляет 8,6 МБ (http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf), и вряд ли вы получите это правильно с регулярным выражением. Для этого есть инструменты. –

3
\/[^\/\s]+ 

\/ - косая черта (бежал)
[^ ] - Класс символов не (^), содержащий ...
\/ - ... хлещет ...
\s - .. . или пробельные
+ - один или несколько из этих

+0

это не работают ... дает error- \t Непризнанной последовательности эвакуации – Royson

1

Я бы не использовать регулярное выражение для этого, я считаю, что использование строковые операции являются более удобной для чтения:

string[] lines = input.split(@"\"); 
foreach(string line in lines) 
{ 
    if(line.contains(" ")) 
    { 
     // Get everything before the space 
    } 
    else 
    { 
     // Get whole string 
    } 
} 
Смежные вопросы