正则表达式抓取网页中某个人发表的内容

tinren 2010-10-06 09:30:07
<TABLE><TR><TD>作者:张三 回复日期:2010-10-01 14:06:19</TD></TR></table>
<div>张三发表的内容一</div>

<TABLE><TR><TD>作者:李四 回复日期:2010-10-02 13:06:29</TD></TR></table>
<div>李四发表的内容.<br></div>

<TABLE><TR><TD>作者:张三 回复日期:2010-10-03 15:06:39</TD></TR></table>
<div>张三发表的内容二</div>

<TABLE><TR><TD>作者:张三 回复日期:2010-10-04 16:06:49</TD></TR></table>
<div>张三发表的内容三</div>

<TABLE><TR><TD>作者:王五 回复日期:2010-10-05 17:06:11</TD></TR></table>
<div>王五发表的内容</div>

上面的内容中,我只想获取到张三发表的内容,即结果为:

张三发表的内容一 回复日期:2010-10-01 14:06:19
张三发表的内容二 回复日期:2010- 10-03 15:06:39
张三发表的内容三 回复日期:2010-10-04 16:06:49

请问正则表达式该怎么写,或者有什么好的解决思路提供下,谢谢了!!
...全文
187 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2010-10-06
  • 打赏
  • 举报
回复
try...

		String pattern = "(?is)作者:张三\\s*((?:(?!</td>).)+)";
Matcher m = Pattern.compile(pattern).matcher(test);
while(m.find())
{
System.out.println(m.group(1));
}
千杯不醉-sen 2010-10-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 goldenfish1919 的回复:]
Java code

public static void main(String[] args) {
String str = "<TABLE><TR><TD>作者:张三 回复日期:2010-10-01 14:06:19</TD></TR></table>\n";
str += "<div>张三发表的内容一</div>\n";
str +……
[/Quote]
刚学的java,感觉楼上的有道理,帮顶、、、
若鱼1919 2010-10-06
  • 打赏
  • 举报
回复

public static void main(String[] args) {
String str = "<TABLE><TR><TD>作者:张三 回复日期:2010-10-01 14:06:19</TD></TR></table>\n";
str += "<div>张三发表的内容一</div>\n";
str += "<TABLE><TR><TD>作者:李四 回复日期:2010-10-02 13:06:29</TD></TR></table>\n";
str += "<div>李四发表的内容.<br></div>\n";
str += "<TABLE><TR><TD>作者:张三 回复日期:2010-10-03 15:06:39</TD></TR></table>\n";
str += "<div>张三发表的内容二</div>\n";
str += "<TABLE><TR><TD>作者:张三 回复日期:2010-10-04 16:06:49</TD></TR></table>\n";
str += "<div>张三发表的内容三</div>\n";
str += "<TABLE><TR><TD>作者:王五 回复日期:2010-10-05 17:06:11</TD></TR></table>\n";
str += "<div>王五发表的内容</div>\n";
Matcher m = Pattern.compile("(回复日期:\\d{4}-\\d{2}-\\d{2}[ \\s*]\\d{2}:\\d{2}:\\d{2}).*?<div>(张三.*?)</div>",Pattern.DOTALL).matcher(str);
while(m.find()){
System.out.println(m.group(2)+" "+m.group(1));
}
}
kebin0001 2010-10-06
  • 打赏
  • 举报
回复
因為你的排版格式"張三發表內容一"在日期之後,所以不可能一個正則表示式就轉成你要的輸出格式。

而如果你的格式是這麼固定的話,用取代就可以了。

整個文件如果是逐行讀入的,那可以用連續兩個空白行做一次區隔,把讀到的兩行取代掉HTML標籤,
然後對調兩行再輸出。

整個文件如果是一次讀入,則先用兩個換行做字串切割(split),然後每個字串再用一個換行切割,
一樣取代掉HTML標籤在對調輸出。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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