2 Stimmen

Abgleich von mehrzeiligen Mustern

Ich möchte Greasemonkey verwenden, um Wiki-Daten von Last.fm abzurufen (dies ist nicht möglich, mit deren REST api). Ich kann die Seite gut mit GM_xmlhttpRequest() abrufen, und es ist richtig zurück.

Ich möchte keinen DOM-Prozessor verwenden, um die gesamte Seite zu verarbeiten, da ich nur einen kleinen Teil haben möchte, also verwende ich reguläre Ausdrücke.

Die Wikidaten sind auf der Seite wie:

<div id="wiki">
description

description
...
</div>

Also schrieb ich:

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

Wenn ich dies in der Fehlerkonsole teste (wo die mehreren Zeilen in eine einzige Zeile geglättet werden), funktioniert es, aber auf der Seite schlägt es fehl und sagt

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

Ich vermute, dass dor im Mehrzeilenmodus nicht mit neuen Zeilen übereinstimmt, was ich auch erwartet hatte. Wie bringe ich ihn dazu, jedes Zeichen einschließlich Zeilenumbrüchen zu erkennen?

10voto

anschauung Punkte 3657

Der Punkt passt nicht zu Zeilenumbrüchen in Javascript - eine Eigenart der Regex-Variante von js.

[^] sollte stattdessen funktionieren (z. B. "Alles außer absolut nichts")

5voto

Versuchen Sie [\s\S] denn [^] Funktioniert nicht im IE8

1voto

yoda Punkte 10482

Versuchen Sie (.*?) anstelle von (.+)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X