正则表达式构建需要帮助

时间:2014-10-22 07:34:01

标签: regex

我在正则表达式构建中需要帮助,包括html标记,重复模式等http://regex101.com/r/iD3xT7/1

我已经完成了部分内容但是当我想重复<a\s[^<>]*>([^<>]*)<\/a>\s的模式时, 重复 会失败。就像递归一样。我需要完整的模式。

1 个答案:

答案 0 :(得分:2)

警告:您不应该使用正则表达式进行HTML解析,
因为在SO上已多次说过。


那就是说,你不能只重复超链接模式。

为了更清晰,您应该使用自己的正则表达式提取每种数据。 PHP中的示例:

$html = /* choose your way to retrieve the HTML */;
$movie = array();

preg_match('/Released:.*?<td>(.+?)<\/td>/s', $html, $matches);
$movies['lucy']['released'] = $matches[1];

preg_match('/Runtime:.*?<td>(.+?)<\/td>/s', $html, $matches);
$movies['lucy']['runtime'] = $matches[1];

preg_match_all('/<a[^>]*?genre[^>]*?>(.+?)<\/a>/', $html, $matches);
$movies['lucy']['genres'] = $matches[1];

var_dump($movies);
/*
array(1) {
  ["lucy"]=>
  array(3) {
    ["released"]=>
    string(13) "July 25, 2014"
    ["runtime"]=>
    string(8) "90 mins "
    ["genres"]=>
    array(2) {
      [0]=>
      string(6) "Action"
      [1]=>
      string(6) "Sci-Fi"
    }
  }
}
*/