Re: [問題] 一段表達式, 希望版友能幫忙解析...

看板RegExp (正規表示式 Regular Expression)作者 (Little Five)時間11年前 (2013/11/04 22:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
謝謝各位前輩的回答, 前陣子比較忙沒有時間上來回覆感謝各位 特別謝謝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
文章代碼(AID): #1ITwjeQ0 (RegExp)
文章代碼(AID): #1ITwjeQ0 (RegExp)