工作当中遇到的正则问题,请正则大神指路。

chanxindiaolong 2014-07-09 11:38:59

上图是页面中的内容。我需要抓取的。
以下是我的正则表达式。可以匹配的上一段,标题那段下面的,我怎么能重复匹配呢?
		Pattern p2 = Pattern
.compile(
"\\d*、[\\s\\p{Zs}]*([\\s|\\S]*?)<br[\\s\\p{Zs}]*/>[\\s\\p{Zs}]*" +
"(?: ){2,}([\\s|\\S]*?)<br[\\s\\p{Zs}]*/>[\\s\\p{Zs}]*" +
"(?: )*总量:(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*?)<br[\\s\\p{Zs}]*/>" +
"[\\s\\p{Zs}]*(?: )*使用量(共享):(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.|无]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>" +
"[\\s\\p{Zs}]*(?: )*使用量(本号):(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>" +
"[\\s\\p{Zs}]*(?: )*余[\\s\\p{Zs}]*量:(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>[\\s\\p{Zs}]*"
);
...全文
228 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chanxindiaolong 2014-07-09
  • 打赏
  • 举报
回复
额。小弟第一次在csdn上求助。这正则不高深,很烂的正则。感谢帮顶。
业余草 2014-07-09
  • 打赏
  • 举报
回复
好高深的正则啊,我等你能跟着学习了,秋分
chanxindiaolong 2014-07-09
  • 打赏
  • 举报
回复
贴出我的解决代码。实在是我的脑子锈住了。呵呵。解决办法很简单。

Pattern pattern = Pattern
						.compile(
								"\\d*、[\\s\\p{Zs}]*([\\s|\\S]*?)<br[\\s\\p{Zs}]*/>[\\s\\p{Zs}]*" +
								        "((?: ){2,}([\\s|\\S]*?)<br[\\s\\p{Zs}]*/>[\\s\\p{Zs}]*" +
								        "(?: )*总量:(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*?)<br[\\s\\p{Zs}]*/>" +
								        "[\\s\\p{Zs}]*(?: )*使用量(共享):(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.|无]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>" +
								        "[\\s\\p{Zs}]*(?: )*使用量(本号):(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>" +
								        "[\\s\\p{Zs}]*(?: )*余[\\s\\p{Zs}]*量:(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>[\\s\\p{Zs}]*)*" 
								        );
				
				Matcher  m = pattern.matcher(html);
				String str = null  ;
				String type = null;
				while (m.find()) {
					type = m.group(1);
					str = m.group(0);
				
					pattern = Pattern
							.compile(
							        "(?: ){2,}([\\s|\\S]*?)<br[\\s\\p{Zs}]*/>[\\s\\p{Zs}]*" +
							        "(?: )*总量:(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*?)<br[\\s\\p{Zs}]*/>" +
							        "[\\s\\p{Zs}]*(?: )*使用量(共享):(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.|无]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>" +
							        "[\\s\\p{Zs}]*(?: )*使用量(本号):(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>" +
							        "[\\s\\p{Zs}]*(?: )*余[\\s\\p{Zs}]*量:(?:<span[\\s\\p{Zs}]*class=\"word12_ora\">)*([0-9|.]*)(?:</span>)*(\\S*)<br[\\s\\p{Zs}]*/>"
							        );


					Matcher  m2 = pattern.matcher(str.toString());
chanxindiaolong 2014-07-09
  • 打赏
  • 举报
回复
感谢哦。已经解决了。呵呵。
tony4geek 2014-07-09
  • 打赏
  • 举报
回复
你贴出html 然后需要抓取哪些内容,给个例子。

62,614

社区成员

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

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