正则表达式匹配RTF中的图片

firehou 2011-06-29 05:26:22
RTF中的图片,想查找出来 用正则表达式能匹配出来吗,或其他办法

{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}
\viewkind4\uc1\pard\lang2052\f0\fs18 sdfds\f1{\object\objemb{\*\objclass Paint.Picture}\objw360\objh360{\*\objdata
01050000
.....
00000000
}{\result{\pict\wmetafile0
}}}
\par
}
...全文
123 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingdom_0 2011-06-30
  • 打赏
  • 举报
回复
既然没有什么规律,那就字符串截取来处理。
正则是为了复杂问题简单化。简单问题复杂化不是给自己找事儿干呢么
porschev 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 firehou 的回复:]

老办法实现
C# code

string rtf = base.Rtf;
string DestStr = "";

while (rtf.Contains(@"{\object\objemb{\*\objclass Paint.Picture}"))
{
DestStr += rtf……
[/Quote]

用这办法还好些。。。正则根本看不出什么规律来。。
firehou 2011-06-30
  • 打赏
  • 举报
回复
老办法实现

string rtf = base.Rtf;
string DestStr = "";

while (rtf.Contains(@"{\object\objemb{\*\objclass Paint.Picture}"))
{
DestStr += rtf.Substring(0, rtf.IndexOf(@"{\object\objemb{\*\objclass Paint.Picture}"));
rtf = rtf.Substring(rtf.IndexOf(@"{\object\objemb{\*\objclass Paint.Picture}") + @"{\object\objemb{\*\objclass Paint.Picture}".Length);
string temp = rtf.Substring(rtf.IndexOf(@"{\result{\pict\wmetafile0") + @"{\result{\pict\wmetafile0".Length + 6);
DestStr += "[##img##]";
rtf = rtf.Substring(rtf.IndexOf(@"{\result{\pict\wmetafile0") + @"{\result{\pict\wmetafile0".Length + 6);
}
return DestStr + rtf;
firehou 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 firehou 的回复:]
RTF中的图片,想查找出来 用正则表达式能匹配出来吗,或其他办法

{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}
\viewkind4\uc1\pard\lang2052\……
[/Quote]
红色对就的部分相当于一对,省略号的内容不同,要匹配的内容为
{\object\objemb{\*\objclass Paint.Picture}任意字符{\result{\pict\wmetafile0
}}}



q107770540 2011-06-29
  • 打赏
  • 举报
回复
没看出匹配规则是什么
sxldfang 2011-06-29
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
namespace sxLdfang
{
class Program
{
static void Main(string[] args)
{
string html = @"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}
\viewkind4\uc1\pard\lang2052\f0\fs18 sdfds\f1{\object\objemb{\*\objclass Paint.Picture}\objw360\objh360{\*\objdata
01050000
.....
00000000
}{\result{\pict\wmetafile0
}}}\par
}";
string pattern = @"(?is)(?<={\\object\\objemb{\\\*\\objclass Paint\.Picture}\\objw\d+\\objh\d+{\\\*\\objdata).*(?=}{\\result{\\pict\\wmetafile0
}}}\\par)";
MatchCollection mc = Regex.Matches(html, pattern);
foreach (Match m in mc)
{
Console.WriteLine(m.Value);
}
Console.ReadKey();
}
}
}


运行结果:

01050000
.....
00000000


huangwenquan123 2011-06-29
  • 打赏
  • 举报
回复
有虾米规律?
本软件用于对文件进行替换、查找、抽取、改名、内码转换等操作。替换功能支持批量文件、批量串的处理,支持超长多行的查找串和替换串,支持动态的替换串;查找功能支持反显查找结果、抽取特定的查找结果;改名支持批量改名、按指定顺序对文件进行编号;内码转换支持文简体与繁体在GBK和BIG5码进行转换;替换、查找既可使用简单表达式进行匹配,也可使用正则表达式进行匹配;正则表达式能够处理特别复杂的匹配;除了文本文件,甚至还支持在office文档替换和查找;可以说,本软件在类似软件,功能的独特和强大达到了很高的程度,希望成为您手头一款常用工具。    本软件在准确和全面的基础上,按特定模式快速进行文件内容的查找、修改、增加、删除、移位、复制、抽取、转换甚至文件名编号等,从而完成资料的加工、采集、统计、定位、查错和校正等等。广泛用于网站页面下载后的加工、网站的网页维护、用户指南和技术资料的批量更新、数据在不同系统进行格式转换、源代码或资源文件修改等方面;使用本工具可极大地提高数据处理的效率,对数据库提供单位、情报搜集部门、企业资料部门、出版社、报刊杂志社、电子图书制作单位、各行业网站和信息心等有广泛的推广使用价值。    本工具有以下特点: 1、具有批量替换、批量查找(可反显查找串)、批量抽取、批量改名、简繁转换等功能; 2、支持一次批量处理多个文件:记事本/写字板/Word都没有提供; 3、*支持一次批量处理多组串:包括UltraEdit/VC等比较强的替换/查找工具都没有提供这个功能; 4、*支持高级表达式的匹配:支持大小写开关、特殊字符(如换行符)、特别是正则表达式(包括通配符)可实现符合复杂规则的匹配;比UltraEdit/Word等实现的正则表达式还要完整得多; 5、*生成动态替换串:替换结果可以是动态的,文件名可以是编号等; 6、*可抽取、采集指定模式的串,例如C程序的注释、全部的文字符串等等; 7、*不仅支持文本/超文本/XML,还支持office文档doc/rtf/xls/ppt; 8、*支持超长多行的查找串和替换串:可以直接使用多行来编辑; 9、*查找替换定义可保存到文件作为模板重复使用,如全半角替换定义文件等; 10 、*查找结果可以突出显示(对文本/超文本/XML); 11、支持自动备份、备份恢复和清除备份; 带*的表示很难从其它软件获得相似功能;
ApSic XBench是一款强大的翻译辅助工具。主要用途有三: 1.双语术语搜索 不仅可按原文和(或)译文搜索,而且可采用“简单”、“正则表达式”和“WORD 通配符”三种搜索模式以有“标准”和“强力搜索”两种搜索方式。支持的双语对照文件格式多达29种: Tab 分隔文本文件 (*.txt)、XLIFF 文件 (*.xlf, *.xlif, *.xliff)、TMX 记忆库 (*.tmx)、TBX/MARTIF 术语表 (*.xml, *tbx, *.mtf)、Trados 导出的记忆库 (*.txt)、Trados 导出的 MultiTerm 5 术语表 (*.txt)、Trados MultiTerm XML 术语表 (*.xml)、Trados TagEditor 文件 (*.ttx)、Trados Word 未清理文件 (*.doc, *.rtf)、Trados Studio 文件 (*.sdlxliff, *.sdlproj)、SDLX ITD 文件 (*.itd)(注:该选项需要你的电脑安装 SDLX)、SDLX 记忆库 (*.mdb)、STAR Transit 2.6/XV 目录树、PO 文件 (*.po)、IBM TranslationManager 导出的词典 (*.sgm)、IBM TranslationManager 安装和导出的文件夹 (*.fxp)、IBM TranslationManager 导出的记忆库 (*.exp)、OpenTM2 导出的词典 (*.sgm)、OpenTM2 安装和导出的文件夹 (*.fxp)、OpenTM2 导出的记忆库 (*.exp)、Wordfast 记忆库 (*.txt)、Wordfast 术语表 (*.txt)、Wordfast Pro TXML 文件、DejaVu X/Idiom 文件 (*.wsprj, *.dvprj)、DejaVu X/Idiom 记忆库 (*.wstm, *.dvmdb)、Logoport RTF 文件 (*.rtf)、Microsoft 软件术语表 (*.csv)、Mac OS X 术语表 (*.ad)、远程 Xbench Server 术语表 2.翻译质量保证 在ApSIC Xbench项目将你当前翻译文件定义为正在进行的翻译,即可进行下列质保检查: 查找尚未翻译的句段;查找原文相同、译文不同的句段;查找译文相同、原文不同的句段;查找原文与译文相同的句段(文字可能尚未翻译);查找标记不匹配;查找数字不匹配;查找双重空白;查找重复的词语;根据关键术语查找术语不匹配;执行用户定义的检查表;译文拼写检查(需要下载语言词典插件); 检查表是用户定义的搜索,你可对正进行的翻译进行批量搜索。例如,你可使用检查表搜索禁用字词或典型翻译陷阱。 3.双语语料转换功能 可将其他双语对照文件转换为:TMX格式文件以导入其他CAT(计算机辅助翻译)软件的翻译记忆库;或制表符分隔文件文件以便整理句子。
第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 1.2.1 创建订单表单 1.2.2 表单处理 1.3 在HTML嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用date()函数 1.5 访问表单变量 1.5.1 简短、等以及长风格的表单变量 1.5.2 字符串的连接 1.5.3 变量和文本 1.6 理解标识符 1.7 检查变量类型 1.7.1 PHP的数据类型 1.7.2 类型强度 1.7.3 类型转换 1.7.4 可变变量 1.8 声明和使用常量 1.9 理解变量的作用域 1.10 使用操作符 1.10.1 算术操作符 1.10.2 字符串操作符 1.10.3 赋值操作符 1.10.4 比较操作符 1.10.5 逻辑操作符 1.10.6 位操作符 1.10.7 其他操作符 1.11 计算表单总金额 1.12 理解操作符的优先级和结合性: 1.13 使用可变函数 1.13.1 测试和设置变量类型 1.13.2 测试变量状态 1.13.3 变量的重解释 1.14 根据条件进行决策 1.14.1 if语句 1.14.2 代码块 1.14.3 else语句 1.14.4 elseif语句 1.14.5 switch语句 1.14.6 比较不同的条件 1.15 通过迭代实现重复动作 1.15.1 while循环 1.15.2 for和foreach循环 1.15.3 do...while循环 1.16 从控制结构或脚本跳出 1.17 使用可替换的控制结构语法 1.18 使用declare 1.19 下一章 第2章 数据的存储与检索 2.1 保存数据以便后期使用 2.2 存储和检索Bob的订单 2.3 文件处理 2.4 打开文件 2.4.1 选择文件模式 2.4.2 使用fopen()打开文件 2.4.3 通过FTP或HTTP打开文件 2.4.4 解决打开文件时可能遇到的问题 2.5 写文件 2.5.1 fwrite()的参数 2.5.2 文件格式 2.6 关闭文件 2.7 读文件 2.7.1 以只读模式打开文件:fopen() 2.7.2 知道何时读完文件:feof() 2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个文件:readfile()、fpassthru()和file() 2.7.5 读取一个字符:fgetc() 2.7.6 读取任意长度:fread() 2.8 使用其他有用的文件函数 2.8.1 查看文件是否存在:file_exists() 2.8.2 确定文件大小:filesize() 2.8.3 删除一个文件:unlink() 2.8.4 在文件定位:rewind()、fseek()和ftell() 2.9 文件锁定 2.10 更好的方式:数据库管理系统 2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的初始化 3.2.2 访问数组的内容 3.2.3 使用循环访问数组 3.3 使用不同索引的数组 3.3.1 初始化相关数组 3.3.2 访问数组元素 3.3.3 使用循环语句 3.4 数组操作符 3.5 多维数组 3.6 数组排序 3.6.1 使用sort()函数 3.6.2 使用asort()函数和ksort()函数对相关数组排序 3.6.3 反向排序 3.7 多维数组的排序 3.7.1 用户定义排序 3.7.2 反向用户排序 3.8 对数组进行重新排序 3.8.1 使用shuffle()函数 3.8.2 使用array_reverse()函数 3.9 从文件载入数组 3.10 执行其他的数组操作 3.10.1 在数组浏览:each()、current()、reset()、end()、next()、pos()和prev() 3.10.2 对数组的每一个元素应用任何函数:array_walk() 3.10.3 统计数组元素个数:count()、sizeof()和array_count_values() 3.10.4 将数组转换成标量变量:extract() 3.11 进一步学习 3.12 下一章 第4章 字符串操作与正则表达式 4.1 创建一个示例应用程序:智能表单邮件 4.2 字符串的格式化 4.2.1 字符串的整理:chop()、ltrim()和trim() 4.2.2 格式化字符串以便显示 4.2.

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧