2009-09-07 98 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工作