【问题标题】:How to match a table tag in Perl regex?如何匹配 Perl 正则表达式中的表标签?
【发布时间】:2014-08-17 14:40:01
【问题描述】:

我试过了

/(^<table)(.*?)($>)/

它应该匹配表格标签<>之间的所有内容,但它不匹配

【问题讨论】:

  • 我认为您的意思是:/(^<table)(.*?)(>$)/,但您的 <table> 标记之前或之后不太可能没有空格。
  • 举个例子会更好。
  • 潜力XY Problem:请用示例数据详细说明您的目标是什么,否则我们不太可能给您建议。
  • @Alex,那么这几乎可以肯定是一个 XY 问题。你从哪里得到这张桌子?你是从网上下载的吗?你用什么方法来获取它? (是的,那里有 3 个问题)。
  • 不要使用正则表达式解析HTML!例如,请参阅HTML::TreeBuilder

标签: regex perl


【解决方案1】:

正如this question 上的 cmets 所述,使用正则表达式解析 HTML 并不实际。

这是一个使用Mojo::DOM 的示例,灵感来自this StackOverflow answer

#!/usr/bin/env perl

use strict ;
use warnings ;

use Mojo::DOM ;

my $html = <<EOHTML;
<!DOCTYPE html>
<html>
<head>
<title>Sample HTML with a table</title>
</head>
<body>
     <table border>
        <tr> <td>a</td> <td>b</td> <td>c</td> </tr>
        <tr> <td>1</td> <td>2</td> <td>3</td> </tr>
     </table>
</body>
</html>
EOHTML

my $dom = Mojo::DOM->new ;

$dom->parse( $html ) ;

for my $div ( $dom->find( 'td' )->each ) {

    print $div->all_text . "\n" ;

}

输出是:

a
b
c
1
2
3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多