匹配多行模式

Jef*_*rth 2 javascript regex greasemonkey

我想使用greasemonkey从Last.fm中抓取wiki数据(这不适用于他们的REST api).我可以使用GM_xmlhttpRequest()获取页面,并且它正在正常返回.

我不想使用DOM处理器来处理整个页面,因为我只想要一个小块,所以我使用正则表达式.

维基数据在页面中如下:

<div id="wiki">
description

description
...
</div>
Run Code Online (Sandbox Code Playgroud)

所以我写道:

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

当我在错误控制台中测试它时(多行被平铺成一行,它可以工作,但在页面上它失败并说

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
Run Code Online (Sandbox Code Playgroud)

我猜多线模式不会使多线匹配新线,这是我的预期.如何使其匹配任何字符,包括换行符?

ans*_*ung 10

这个点与javascript中的换行符不匹配 - 这是js正则表达式的一个怪癖.

[^] 应该工作(例如"一切除了绝对没有")


小智 5

尝试[\s\S],因为[^]在IE8中不起作用