如何从字符串浮动?

时间:2015-03-05 18:20:44

标签: html regex html-parsing

例如我有类似的字符串:

#resultStats{opacity:0;top:13px}</style><div id="extabar"><div id="topabar" style="position:relative"><div class="ab_tnav_wrp" id="slim_appbar"><div id="sbfrm_l"><div id="resultStats">About 5,320 results<nobr> (0.13 seconds)&nbsp;</nobr></div></div></div></div><div id="botabar" style="display:none"></div></div><div></div></div><div class="mw" data-jibp="h" data-jiis="uc" id="ucs"></div><div class="mw"><div data-jibp="h" data-jiis="uc" id="akp"></div><div id="rcnt" style="clear:both;position:relative;zoom:1">

我需要从中获取5,320。这样做<div id="resultStats">(\d+(?:,\d+))<\/div>

P.S。 我需要特别从<div id="resultStats">

中提取

1 个答案:

答案 0 :(得分:3)

使用正则表达式解析html标签是可行的,但不是 推荐用于整体html语言。

如果必须,这是一个简单的例子

<div\s+id\s*=\s*"resultStats"\s*>[^<]*?(\d(?:,?\d)*)[^<]*?<

格式化:

 <div \s+ id \s* = \s* "resultStats" \s* >
 [^<]*? 
 (                             # (1 start)
      \d 
      (?: ,? \d )*
 )                             # (1 end)
 [^<]*? <

输出:

  **  Grp 0 -  ( pos 238 , len 42 ) 
 <div id="resultStats">About 5,320 results<
  **  Grp 1 -  ( pos 266 , len 5 ) 
 5,320