Соответствие многострочных шаблонов

Я хочу использовать greasemonkey для очистки данных wiki от Last.fm(это невозможно с их REST api). Я могу захватить страницу с GM_xmlhttpRequest(), и она возвращается правильно.

Я не хочу использовать процессор DOM для обработки всей страницы, так как я хочу только небольшой фрагмент, поэтому я использую регулярные выражения.

Данные wiki находятся на странице, например:

<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 соответствовать новым строкам, чего я ожидал. Как заставить его соответствовать любому символу, включая разрывы строк?

Ответ 1

Точка не соответствует символам новой строки в javascript - причуде js regex flavor.

[^] должен работать (например, "Все, кроме абсолютно ничего" )

Ответ 2

попробуйте [\s\S], потому что [^] не работает в IE8

Ответ 3

Попробуйте (. *?) вместо (. +)