2009-12-15 72 views
1

我的文件具有像::某些数据C#如何写正则表达式

/页2 0 R /类型/目录/ AcroForm

/计数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 2009-12-15 11:07:18

+3

因为PDF规范是8.6MB(http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf),所以不太可能用正则表达式来正确表达。有这方面的工具。 – 2009-12-15 11:09:14

3
\/[^\/\s]+ 

\/ - 斜线(转义)
[^ ] - 包含字符类不(^)...
\/ - ... ...斜线
\s - .. 。或空白
+ - 一个或多个这些

+0

它不工作... 它给无差错\t无法识别的转义序列 – Royson 2009-12-15 11:07:13

1

我不会用正则表达式这一点,我发现使用字符串操作更具有可读性:

string[] lines = input.split(@"\"); 
foreach(string line in lines) 
{ 
    if(line.contains(" ")) 
    { 
     // Get everything before the space 
    } 
    else 
    { 
     // Get whole string 
    } 
}