作者DongFeng (Little Five)
看板RegExp
标题Re: [问题] 一段表达式, 希望版友能帮忙解析...
时间Mon Nov 4 22:12:52 2013
谢谢各位前辈的回答, 前阵子比较忙没有时间上来回覆感谢各位
特别谢谢danny8376前辈, 谢谢您那麽用心回答还特地回信到我信箱>///<
经过danny前辈分阶段的讲解我已经知道这行表达式是怎麽运作的了
白话的说来就是匹配
<table此处可为非>的任意字串(含空白与无)>
匹配非<(一般来说是空白或无)
匹配非<table、非</table的任意tag(一般来说是<thead/><tbody/><tr/><td/></tfoot/>)
</table>
这整段可以找出页面中所有不含table的table
但对於*+的部分我还是有点疑惑, 我自己的解读是[^>]*+是匹配非>的任意字串後再以该
字串作一次以上的验证,也就是说
<table c>
<table cl>
<table cla>
<table clas>
<table class>
<table class=>
<table class=">
......
<table class="test">
因为任意字元的关系所以匹配到c就停止并回传成功, 不知道这样解读对不对
-----------------------------------------------------------------------------
後来在表达式的使用上我又遇到了其他的问题, 如前所述前面的表达式是匹配不含tabel
的tabel, 但在某些网页上会遇到下面的状况
<table>
<tr>
<td>
<table>...</table>
内文...
</td>
</tr>
</table>
使用同样的表达式去匹配的话会抓出最里头的table但却抓不出内文, 後来我在版上爬文
後用了另一段表达式: /<table[^>]*+>((<.+?>.*?<\/.+?>|.)+?)<\/table>/is
这段表达式可以完整的抓出最外层table以及内容(含里table)
但後来我发现这段表达式只有抓出内文中的其中一个table, 虽然抓出来的table是我想要
的没错但就是疑惑为什麽其他的table没被抓出来...
随文附上资料来源:
http://www.thsrc.com.tw/tw/TimeTable/SearchResult
其实这是高铁时刻表查询系统, POST的所需资料後即可导出相应的时刻表
导出的时刻表内有两个table, 分别是
<table>...</table>
<table class="word_size">...</table>
没有抓出来的<table class="word_size">...</table>, 虽然里头只是无关紧要的资料,
但因为有写[^>]*+的关系一直觉的应该会抓出来才对...
希望各位前辈能够再拨空帮小的解答一下, 叙述能力不大好文长还请见谅...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.111.59.235