Perl 中模式所需的单行正则表达式
我需要使用 perl 读取许多包含类似结构的 HTML 文件。
该结构包括 STRRRR...E
- S=表格开始之前的html标题
- T=html文件中唯一的表格开始结构(我可以识别它)
- R = html 元素组(那些是 tr 的,我也可以识别它)
- E=所有剩余 - 表示结束 R
我想使用单行“m”perlop 提取数组中的所有 R .
我正在寻找这样的东西:
@all_Rs = $htmlfile=~m{ST(R)*E}gs;
但它从未成功。
到目前为止,我一直在尝试使用删除不需要的文本、for 循环等方法来做到这一点。 我想从此页面提取所有行: http:// www.trainenquiry.com/StaticContent/Railway_Amnities/Enquiry%20-%20North/STATIONS.aspx 并且这样的页面有很多。
I need to read many HTML files containing similar structure using perl.
The structure consists of
STRRRR...E
- S=html header just before table begins
- T=unique table start structure in the html file(I can identify it)
- R=Group of html elements(those are tr's, I can identify it too)
- E=All remaining - singnifies end R's
I want to extract all R's in array using single line "m" perlop.
I'm looking for something like this:
@all_Rs = $htmlfile=~m{ST(R)*E}gs;
But it has never worked out.
Until now I've been doing round about way to do it like using deleting unwanted text, for loop etc.
I want to extract all rows from this page: http://www.trainenquiry.com/StaticContent/Railway_Amnities/Enquiry%20-%20North/STATIONS.aspx
and there are many such pages.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
正则表达式是错误的工具。使用 HTML 解析器。
HTML::TreeBuilder::XPath 继承自 HTML::TreeBuilder。
Regex is the wrong tool. Use an HTML parser.
HTML::TreeBuilder::XPath inherits from HTML::TreeBuilder.
daxim 关于使用真正的解析器是正确的。我个人的选择是 XML::LibXML。
这让我从该页面获得每个车站行。
为了进行更多的工作,我们可以有一个很好的数据结构来保存每个单元格中的文本。
daxim is right about using a real parser. My personal choice is XML::LibXML.
This gets me each station row from that page.
For a bit more work we can have a nice data structure to hold the text in each cell.
如果您想处理 HTML 表格,请考虑使用知道如何处理 HTML 表格的模块!
If you want to process an HTML table, consider using a module that knows how to process HTML tables!