2009-09-07 116 views
2

我想使用greasemonkey從Last.fm刮取維基數據(這不適用於他們的REST API)。我可以用GM_xmlhttpRequest()抓住頁面,並且返回正確。匹配多行模式

我不想使用DOM處理器來處理整個頁面,因爲我只想要一個小塊,所以我使用正則表達式。

維基數據在頁等:

<div id="wiki"> 
description 

description 
... 
</div> 

所以我寫:

/\<div id="wiki"\>(.+)\<\/div\>/m.exec(data)[1]; 

當我測試這在錯誤控制檯(其中所述多個線被壓扁成一個單一的線,它的工作原理,但在頁面上它失敗,並說

Error: /\<div id="wiki"\>(.+)\<\/div\>/m.exec(data) is null 
Source File: file:///home/jeff/.mozilla/firefox/x4su9596.default/extensions/%7Be4a8a97b-f2ed-450b-b12d-ee082ba24781%7D/components/greasemonkey.js 
Line: 357 

我猜測多行模式不會使dor匹配新線,這是我的預期。我如何使它匹配包括換行符在內的任何字符? (。*?)

回答

8

的點並不在JavaScript中匹配換行符 - JS的的正則表達式的味道一個怪癖。

[^]應該工作而不是(例如: 「一切只是絕對沒有什麼」)

+0

這個工作,但我不得不讓lazy-- [^] + ?,謝謝 – 2009-09-07 00:52:45

0

嘗試代替(+)

5

嘗試[\s\S],因爲[^]不IE8工作