我在抓取YouTube播放列表頁面時遇到了一些正則表達式代碼。它主要工作正常,但它撿了幾個奇怪的結果正則表達式問題 - 刮YouTube
表達:
(?<=v=)[a-zA-Z0-9-_]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+
的東西挑出來的例子:
yXBckFyiMyU,
opWYnUpNtG8,
YFbLRZCExBk,
I_GZahAl-PQ,
G6F_iP-F7Fw
這樣從
https://www.youtube.com/watch?v=_ClmClS_Mqs&list=PL6422619E56951B73&index=5&feature=plpp_video
鏈接
在大多數情況下,這似乎工作正常,但它也正在挑選這些實例
data-thumb="//i1.ytimg.com/vi/84GVRtJ1CvY/<FROM RIGHT ONWARDS IS WHAT IT MATCHES>default.jpg" ><span class="vertical-align"></span></span></span></span>
data-thumb="//i4.ytimg.com/vi/WNIPqafd4As/<FROM RIGHT ONWARDS IS WHAT IT MATCHES>default.jpg" alt="" class="thumb"></span></span></span><span class="clip"><span class="centering-offset"><span class="centering"><span class="ie7-vertical-align-hack">
正則表達式是相當艱鉅的。有人知道表達有什麼問題嗎?
你有沒有使用一些HTML解析器來創建元素樹考慮,然後只適用於正則表達式中的鏈接在那棵樹上? [這裏](http://stackoverflow.com/a/1732454/960195)是一個幽默的意見,解析HTML與正則表達式與專用解析器。 – 2012-03-23 01:38:30
@Adam:我們不是試圖解析任意的HTML - 只是URL。 Cthulu /託尼小馬不會消耗你的靈魂*嘗試*與正則表達式做到這一點。 (儘管如此,仍然建議使用正確的HTML和URL解析庫。) – 2012-03-23 01:42:51