求正则。

air123456789 2010-09-13 02:07:16

string a=@"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fmodern\fprq6\fcharset134 \'cb\'ce\'cc\'e5;}{\f1\fnil ;}{\f2\fnil\fcharset134 \'b7\'bd\'d5\'fd\'d2\'a6\'cc\'e5;}{\f3\fnil\fcharset134 \'b7\'bd\'d5\'fd\'ca\'e6\'cc\'e5;}{\f4\fnil\fcharset134 \'bf\'ac\'cc\'e5_GB2312;}{\f5\fnil\fcharset134 \'c1\'a5\'ca\'e9;}{\f6\fnil\fcharset134 \'ba\'da\'cc\'e5;}{\f7\fswiss\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue0;\red0\green255\blue255;\red0\green0\blue255;\red138\green43\blue226;\red165\green42\blue42;\red169\green169\blue169;\red255\green0\blue0;\red0\green255\blue0;\red255\green255\blue0;}
\viewkind4\uc1\pard
\cf1\lang2052\f0\fs30 aaaaaaaaaa \par
\cf2\f2\fs40 bbbbbbbbbbbbb \par
\cf3\f3\fs50 cccccccccc \par
\cf4\f4\fs60 ddddddddddd \par
\cf5\f5\fs70 eeeeeeeeee \par
\cf6\f6\fs80 ffffffffffffffffffff \par
\cf6\f6 \par
}"

取出“\red0\green0\blue0” “\red0\green255\blue255” “\red0\green0\blue255” “\red138\green43\blue226” "\red165\green42\blue42"...
还有“ aaaaaaaaaa ” “ bbbbbbbbbbbbb ” “ cccccccccc ” ...
两条正则。
...全文
136 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
兔子-顾问 2010-09-13
  • 打赏
  • 举报
回复
没有答案可以继续跟帖。刚忙,没仔细回,你规则不同继续说明即可。。
兔子-顾问 2010-09-13
  • 打赏
  • 举报
回复
囧,不用重发贴。
兔子-顾问 2010-09-13
  • 打赏
  • 举报
回复
如果\par不一定有
Regex reg2 = new Regex(@"(?<=\\cf[^ ]+\s+)\S+(?=\s*\\par|})", RegexOptions.Compiled);
air123456789 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wuyazhe 的回复:]

看上去一定会有的。
[/Quote]
不好意思,令发一帖 再问。 浪费你时间了....
兔子-顾问 2010-09-13
  • 打赏
  • 举报
回复
看上去一定会有的。
air123456789 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyazhe 的回复:]

C# code
private static void TestRegex22()
{
string a = @"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fmodern\fprq6\fcharset134 \'cb\'ce\'cc\'e5;}{\f1\fnil ;}{……
[/Quote]


“ aaaaaaaaaa ” “ bbbbbbbbbbbbb ” 这个之后 不一定有 \par 但是是在最后一个花括号之前的。。要怎么弄呢?
air123456789 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 peter200694013 的回复:]

C# code

string a = @"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fmodern\fprq6\fcharset134 \'cb\'ce\'cc\'e5;}{\f1\fnil ;}{\f2\fnil\fcharset134 \'b7\'bd\'d5\'fd\'……
[/Quote]

求“\red0\green0\blue0” 的 能不能限制下是在 {\colortbl ;\red0\green0\blue0;} 里的? {\colortbl ; }
air123456789 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 peter200694013 的回复:]

这个
“ aaaaaaaaaa ” “ bbbbbbbbbbbbb ” “ cccccccccc ” ...
是根据什么规则?
[/Quote]

这个是RTF格式的内容 aaaaaaaaaa 前面标记的是一个样式。 bbbbbbbbbbbbb 前面标记的又是另一个样式。。。
兔子-顾问 2010-09-13
  • 打赏
  • 举报
回复
    private static void TestRegex22()
{
string a = @"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fmodern\fprq6\fcharset134 \'cb\'ce\'cc\'e5;}{\f1\fnil ;}{\f2\fnil\fcharset134 \'b7\'bd\'d5\'fd\'d2\'a6\'cc\'e5;}{\f3\fnil\fcharset134 \'b7\'bd\'d5\'fd\'ca\'e6\'cc\'e5;}{\f4\fnil\fcharset134 \'bf\'ac\'cc\'e5_GB2312;}{\f5\fnil\fcharset134 \'c1\'a5\'ca\'e9;}{\f6\fnil\fcharset134 \'ba\'da\'cc\'e5;}{\f7\fswiss\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue0;\red0\green255\blue255;\red0\green0\blue255;\red138\green43\blue226;\red165\green42\blue42;\red169\green169\blue169;\red255\green0\blue0;\red0\green255\blue0;\red255\green255\blue0;}
\viewkind4\uc1\pard
\cf1\lang2052\f0\fs30 aaaaaaaaaa \par
\cf2\f2\fs40 bbbbbbbbbbbbb \par
\cf3\f3\fs50 cccccccccc \par
\cf4\f4\fs60 ddddddddddd \par
\cf5\f5\fs70 eeeeeeeeee \par
\cf6\f6\fs80 ffffffffffffffffffff \par
\cf6\f6 \par
}";
Regex reg1 = new Regex(@"\\red[^;]+", RegexOptions.Compiled);
Regex reg2 = new Regex(@"(?<=\\cf[^ ]+\s+)\S+(?=\s*\\par)", RegexOptions.Compiled);
foreach (Match m in reg1.Matches(a))
{
Console.WriteLine(m.Value);
}
Console.WriteLine("--------------神奇的分割线--------------");
foreach (Match m in reg2.Matches(a))
{
Console.WriteLine(m.Value);
}
}


输出

\red0\green0\blue0
\red0\green255\blue255
\red0\green0\blue255
\red138\green43\blue226
\red165\green42\blue42
\red169\green169\blue169
\red255\green0\blue0
\red0\green255\blue0
\red255\green255\blue0
--------------神奇的分割线--------------
aaaaaaaaaa
bbbbbbbbbbbbb
cccccccccc
ddddddddddd
eeeeeeeeee
ffffffffffffffffffff
Peter200694013 2010-09-13
  • 打赏
  • 举报
回复
这个
“ aaaaaaaaaa ” “ bbbbbbbbbbbbb ” “ cccccccccc ” ...
是根据什么规则?
兔子-顾问 2010-09-13
  • 打赏
  • 举报
回复
(1) \\red[^;]+
(2) (?<=\\cf[^ ]+\s+)\S+(?=\s*\\par)
Peter200694013 2010-09-13
  • 打赏
  • 举报
回复

string a = @"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fmodern\fprq6\fcharset134 \'cb\'ce\'cc\'e5;}{\f1\fnil ;}{\f2\fnil\fcharset134 \'b7\'bd\'d5\'fd\'d2\'a6\'cc\'e5;}{\f3\fnil\fcharset134 \'b7\'bd\'d5\'fd\'ca\'e6\'cc\'e5;}{\f4\fnil\fcharset134 \'bf\'ac\'cc\'e5_GB2312;}{\f5\fnil\fcharset134 \'c1\'a5\'ca\'e9;}{\f6\fnil\fcharset134 \'ba\'da\'cc\'e5;}{\f7\fswiss\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue0;\red0\green255\blue255;\red0\green0\blue255;\red138\green43\blue226;\red165\green42\blue42;\red169\green169\blue169;\red255\green0\blue0;\red0\green255\blue0;\red255\green255\blue0;}
\viewkind4\uc1\pard
\cf1\lang2052\f0\fs30 aaaaaaaaaa \par
\cf2\f2\fs40 bbbbbbbbbbbbb \par
\cf3\f3\fs50 cccccccccc \par
\cf4\f4\fs60 ddddddddddd \par
\cf5\f5\fs70 eeeeeeeeee \par
\cf6\f6\fs80 ffffffffffffffffffff \par
\cf6\f6 \par
}";

Regex reg = new Regex(@"\\red\d+\\green\d+\\blue\d+");

foreach (Match m in reg.Matches(a))
Console.WriteLine(m.Value);
草原牧心 2010-09-13
  • 打赏
  • 举报
回复
正则??

111,129

社区成员

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

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

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