saucer(思归, .NET MVP)大哥,请教一个正则表达式!

wang_solaris 2003-08-29 11:04:15
我有一个多行的文本,其中如果某一行是以TAB键开头的,说明它是上一行的续行。请问怎么才能匹配完整的一行?
比如:
From: aaaaaaaaaaaa aaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaa
To: bbbbbbbbbbbbbbbbbb bbbbbbbbbbbb
bbbbbbbbbbbbbbbbbb

我要取出"From: "后面属于这一行的字符串(实际上占了三行),也就是要得到下面的东西:
aaaaaaaaaaaa aaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaa

请问该怎么写正则表达式?谢谢!
...全文
33 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_solaris 2003-08-30
  • 打赏
  • 举报
回复
谢谢!

我的表达式是这样写的:
Regex r =n new Regex(@"^From:(?<from>.*?)(?=\r\n[^\t])", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.Compiled);

好象这样是可以的。
saucer 2003-08-29
  • 打赏
  • 举报
回复
another solution:

Regex r = new Regex("From:(?<from>.*?)(?=\n\\S|$)", RegexOptions.IgnoreCase |RegexOptions.Singleline);
saucer 2003-08-29
  • 打赏
  • 举报
回复
try

string s = @"From: aaaaaaaaaaaa aaaaaaaaaaaa
baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
caaaaaaaaaaaad
To: bbbbbbbbbbbbbbbbbb bbbbbbbbbbbb
bbbbbbbbbbbbbbbbbb
";

Regex r = new Regex("From:(?<from>.*(\n\t.*)*(?=\n\\S|$))", RegexOptions.IgnoreCase);
Match m = r.Match(s);
if (m.Success)
Console.WriteLine("{0}",m.Groups["from"].Value);

110,499

社区成员

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

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

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