我的文件具有像::某些数据C#如何写正则表达式
/页2 0 R /类型/目录/ AcroForm
/计数1 /儿童[3:0 R] /类型/页
/过滤/ FlateDecode /长度84
什么是正则表达式来获得这个输出..
Pages Type Catalog AcroForm Count Kids Type Pages Filter FlateDecode Length
我想在'/'&之后的第二个'/'或空格处取出字符串。
在此先感谢。
我的文件具有像::某些数据C#如何写正则表达式
/页2 0 R /类型/目录/ AcroForm
/计数1 /儿童[3:0 R] /类型/页
/过滤/ FlateDecode /长度84
什么是正则表达式来获得这个输出..
Pages Type Catalog AcroForm Count Kids Type Pages Filter FlateDecode Length
我想在'/'&之后的第二个'/'或空格处取出字符串。
在此先感谢。
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文件。
\/[^\/\s]+
\/
- 斜线(转义)
[^ ]
- 包含字符类不(^
)...
\/
- ... ...斜线
\s
- .. 。或空白
+
- 一个或多个这些
它不工作... 它给无差错\t无法识别的转义序列 – Royson 2009-12-15 11:07:13
这是C#:
@"/([^\s/]+)"
你可以在这里测试它只是增加什么是在引号之间: http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
我不会用正则表达式这一点,我发现使用字符串操作更具有可读性:
string[] lines = input.split(@"\");
foreach(string line in lines)
{
if(line.contains(" "))
{
// Get everything before the space
}
else
{
// Get whole string
}
}
出于好奇,为什么不呢? – cwap 2009-12-15 11:07:18
因为PDF规范是8.6MB(http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf),所以不太可能用正则表达式来正确表达。有这方面的工具。 – 2009-12-15 11:09:14