发新话题
打印

正则匹配html表格中的数据

正则匹配html表格中的数据

忽略一切属性定义
<table><tr><td>xxx</td><td>xxx</td>.....省略若干<td>...</td>..</tr></table>
一个简单的html表格 如果想用正则匹配出表格中所有内容
应该怎么写?
(?:<tr>(<td>([^<]*?)<\/td>)+</tr>)+
这样的正则能不能匹配出来?
但我匹配 好象只能输出前面几个后面的都匹配不出来
谁能指导下 thx
      

TOP

不是很明白你的意思, 能否举例说明?      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

比如说有这样一个表格
复制内容到剪贴板
代码:
[font=Arial]<TABLE>
<TR>
<TD>aaaaTD>
<TD>bbbb</TD>
<TD>cccc</TD>
<TD>dddd</TD>
<TD>eeee</TD></TR>
<TR>
<TD>ffff</TD>
<TD>gggg</TD>
<TD>hhhh</TD>
<TD>iiii</TD>
<TD>jjjj</TD></TR>
<TR>
<TD>kkkk</TD>
<TD>llll</TD>
<TD>mmmm</TD>
<TD>nnnn</TD>
<TD>oooo</TD></TR></TBODY></TABLE>


我想匹配出从aaaa到oooo的信息 正则 该如何写?
但一个表格的行与列又不是固定的
能不能写一个通用的匹配任意表格中内容的reg出来?      

TOP

把 HTML 的 tag 给去掉不就行了?      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

s/<[^>*?]>//
这样么
可这样等到的是连续的字符串啊
而且我上面的例子是一个完美的假设 代码只有table中的内容
一个正常的页面 应该不会只有这么点东西吧

你觉得这个正则有什么错误   我觉得是正确的 -。- 但就是输出不了   (?:<tr>(<td>([^<]*?)<\/td>)+</tr>)+      

TOP

晕  有没有能指点下啊
我搞了好久了      

TOP

终于有点头绪了
复制内容到剪贴板
代码:
if (@abc=$str=~m/(?:<tr>(?:<td>(([^<]*)?)<\/td>)+<\/tr>)+/i)
这一句  正则会把$1 覆盖掉  始终用新匹配到的值赋给$1
有没有什么办法 解决?
达人指教      

TOP

复制内容到剪贴板
代码:
[color=blue]-(guest@mac:tty1)-(tmp)-
[5894 0] %[/color] cat foo.pl
#!/usr/bin/perl -w

use strict;

my $tbl = "
<TABLE><TBODY>
    <TR>
        <TD>aaaa</TD>
        <TD>bbbb</TD>
        <TD>cccc</TD>
        <TD>dddd</TD>
        <TD>eeee</TD>
    </TR>
    <TR>
        <TD>ffff</TD>
        <TD>gggg</TD>
        <TD>hhhh</TD>
        <TD>iiii</TD>
        <TD>jjjj</TD>
    </TR>
    <TR>
        <TD>kkkk</TD>
        <TD>llll</TD>
        <TD>mmmm</TD>
        <TD>nnnn</TD>
        <TD>oooo</TD>
    </TR>
</TBODY></TABLE>";

my @a = $tbl =~ /<td>(.*?)<\/td>/sig;
foreach (@a) {
    print; print "\n";
}
[color=blue]-(guest@mac:tty1)-(tmp)-
[5894 0] %[/color] ./foo.pl
aaaa
bbbb
cccc
dddd
eeee
ffff
gggg
hhhh
iiii
jjjj
kkkk
llll
mmmm
nnnn
oooo
[color=blue]-(guest@mac:tty1)-(tmp)-
[5894 0] %[/color]
      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

发新话题