帮纠正一个正则

bios8086 2011-05-14 12:13:19
<td align="center" class="td-main2">


已经发送




</td>

matchString = @"(?<=\<td align=""center"" class=""td-main2"">)(.*)(?=\</td>)";
我是这样写的!
无效
...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2011-05-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 bios8086 的回复:]
<td align="center" class="td-main2">


已经发送




</td>

matchString = @"(?<=\<td align=""center"" class=""td-main2"">)(.*)(?=\</td>)";
我是这样写的!
无效
[/Quote]
(?s)(?<=<td align="center" class="td-main2">)(.*?)(?=</td>)

在你的上个帖子中我已经给出另外一种解决方案
子夜__ 2011-05-14
  • 打赏
  • 举报
回复
你要匹配什么?
x8bits 2011-05-14
  • 打赏
  • 举报
回复
Regex expression = new Regex("<td align=\"center\" class=\"td-main2\">(?<content>.*)</td>\
", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.CultureInvariant);
Group g = expression.Matches(text)[0].Groups["content"];
-过客- 2011-05-14
  • 打赏
  • 举报
回复
小数点.匹配除换行符“\n”之外的任意字符,你的例子里有换行,当然匹配不了

(?s) 单行模式,改变小数点的匹配行为,使之能够匹配任意字符

还有一点楼主要注意,3楼这里用的是.*?的非贪婪模式,而不是.*的贪婪模式,拿下面的例子试下就知道匹别了

<td align="center" class="td-main2">
已经发送
</td>
<td align="center" class="td-main1">
等待发送
</td>
bios8086 2011-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]

引用楼主 bios8086 的回复:
<td align="center" class="td-main2">


已经发送




</td>

matchString = @"(?<=\<td align=""center"" class=""td-main2"">)(.*)(?=\</td>)";
我是这样写的!
无效

(?s)(?<=<td align="……
[/Quote]

为什么对付这种 前面加(?s)就行了
不加的都可以处理<td class="td-main1" align="center" width="150">2011-01-13   15:35:45</td> 这种不加(?s)
bios8086 2011-05-14
  • 打赏
  • 举报
回复
行了 啥也不说了!你们真好!培养了我的惰性,反正正则用的也不多,不会就上了问你们 哈哈!

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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