2014-06-26 15 views
0

我试图如何匹配Perl正则表中的表标记?

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

应该匹配的一切,是<>之间为表标签,但它并不

+2

我想你的意思是:<(。*?)(表('/ ^)> $)/',但在'

'标签之前或之后不会有空白。 –

+0

一个例子会更好。 –

+3

潜在的['XY问题'](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem):请详细解释你的目标是什么样的数据,或者我们是不太可能建议你。 – Miller

回答

0

正如评论上this question提到的,它不是真正的实用解析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