PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
RegExp
[問題] 一段表達式, 希望版友能幫忙解析...
作者:
DongFeng
2013-11-01 00:00:18
表達式:/<table[^>]*+>([^<]*+(?:(?!<\/?+table)<[^<]*+)*+)<\/table>/i
這段表達式在實際使用上是抓出來源字串內的所有<table>...</table>
我知道[^>]表達的是 不包含> 的所有字串, 但一直弄不清楚的是在[^>]後面的*+的作用
第一個問題:*是匹配<table[^>]還是匹配[^>], 如果是匹配[^>]是不是表示允許擁有零個
或多個 不包含> 的字串, 因為我一直在想既然是要抓出tabel, 匹配<table[^>]表示允許
零個又很怪
第二個問題:為什麼要在*號後面再加上+, *不是就允許零個或多個字串存在了嗎?為什麼
還要多一個允許一個或多個字串存在的+呢?
第三個問題:中間()的部分已經完全不能理解.,正常table裡頭會允許<thead>...</thead>
<tr>...</tr>,<td>...</td>,<tfoot>...</tfoor>等tag的存在, 但是()中開始就用[^<]
拒絕 < 的存在, 希望有版友能替我解釋這一段...
抱歉, google跟在版上爬文了還是花煞煞, 不得已只好直接發文問了, 還請大家不吝嗇指
教
作者:
s25g5d4
(function(){})()
2012-01-01 00:27:00
http://goo.gl/NRIfS
*+ Match 0 or more times and givenothing back
作者:
LPH66
(-6.2598534e+18f)
2012-01-01 13:14:00
意思是如果對完了但後面不合的話, 不會退一格去試平常 * 的 match 動作會試遍所有 * 的組合後才回報找不到最先試的是抓最多的組合, 但如果這不對的話會少抓一個再試再不對再少一個, 一直到沒抓都不對就回報失敗*+ 的意思就是抓最多的組合失敗了就別試了對結果沒有影響, 但對 match 的效能有很大的影響特別是這裡已經指定了 [^>] 了那就沒必要退了 (一定不會對)那就乾脆叫它別去試不可能的組合呃說錯了, 這個例子對結果沒有影響
作者: up9cloud (九天)
2012-01-01 13:21:00
第一個問題:是批配[]裡的東西因為<table>,<table border="1">都可能是目標
作者:
danny8376
(釣到一隻猴子@_@)
2012-01-01 13:22:00
對齁 會效能有影響呢www 難怪搞得這麼複雜XD用*+多了會誤吃</table的大麻煩 後方才拖了一大串...
作者:
godspeedlee
(妳,我可以)
2012-01-13 10:24:00
參考看看
http://godspeedlee.byethost10.com/regex/
http://tinyurl.com/oe593xd
繼續閱讀
[問題] A條件下 抓取B條件
Dream74
[問題] Perl 抓中文字串
mmm321
[問題] 請問我的表示式該如何修改
jjooeeyy
[問題] 請問CASE使用的方式
perasa
[問題] 如何找非於行開頭的某字?
ggirls
Re: [問題] 抓網址
Sombra
Re: [問題] 在字串裡找到符合的字元
Prius
Re: [問題] 在字串裡找到符合的字元
CindyLinz
[問題] 在字串裡找到符合的字元
jacobcan118
[心得] 重複抓特定html標籤資料
felaray
Links
booklink
Contact Us: admin [ a t ] ucptt.com