Regex-Übereinstimmungsfehler

8

Ich bin neu bei Python (ich habe auch kein Programmiertraining), also bitte behalte das im Hinterkopf, wenn ich meine Frage stelle.

Ich versuche, eine abgerufene Webseite zu suchen und alle Links mit einem bestimmten Muster zu finden. Ich habe das erfolgreich in anderen Skripten gemacht, aber ich bekomme einen Fehler, der sagt

%Vor%      

sre_constants.error: mehrfache Wiederholung

Ich muss zugeben, ich weiß nicht warum, aber ich bin wieder neu in Python und Regular Expressions. Aber selbst wenn ich keine Muster verwende und einen bestimmten Link verwende (nur um die Übereinstimmung zu testen), glaube ich nicht, dass ich irgendwelche Übereinstimmungen zurückgebe (es wird nichts an das Fenster gesendet, wenn ich match.group (0) drucke) Ich testete ist auskommentiert.

Irgendwelche Ideen? Es ist normalerweise einfacher für mich, mit gutem Beispiel zu lernen, aber jeder Rat, den Sie geben können, wird sehr geschätzt!

Brock

%Vor%     
Btibert3 12.08.2009, 21:15
quelle

5 Antworten

0
%Vor%     
hughdbrown 12.08.2009, 22:01
quelle
1

Das bedeutet, dass Ihr regulärer Ausdruck einen Fehler aufweist.

%Vor%

Was bedeutet? +? Beide ? und + sind Meta-Zeichen, die direkt nebeneinander keinen Sinn ergeben. Vielleicht hast du vergessen, dem '?' oder etwas.

    
Unknown 12.08.2009 21:19
quelle
1

Sie müssen dem Literal entkommen? und das Literal '(' und '), das Sie versuchen zu entsprechen.

Ich glaube auch, dass Sie statt "? +" nach dem nicht-gierigen Matching von "+?" suchen.

Weitere Dokumentation hier.

Versuchen Sie in Ihrem Fall:

%Vor%     
retracile 12.08.2009 21:19
quelle
1

Wie Sie feststellen, ist das Parsen von beliebigem HTML nicht einfach. Das machen Packages wie Beautiful Soup. Beachten Sie, dass Sie es in Ihrem Skript aufrufen, aber die Ergebnisse nicht verwenden. In der Dokumentation hier finden Sie Beispiele, wie Sie Ihre Aufgabe erheblich vereinfachen können!

    
Ned Deily 12.08.2009 21:46
quelle
0

Um zu erweitern, was andere geschrieben haben:

.? bedeutet "eins oder null irgendeines Zeichens"

. + bedeutet "ein oder mehrere Zeichen"

Wie Sie hoffentlich sehen können, macht die Kombination der beiden keinen Sinn; sie sind unterschiedliche und widersprüchliche "Wiederholungszeichen". Also, Ihr Fehler über "mehrere Wiederholungen" ist, weil Sie diese beiden "Wiederholungs" -Zeichen in Ihrem regulären Ausdruck kombiniert haben. Um es zu beheben, entscheiden Sie einfach, welche Sie eigentlich verwenden wollten, und löschen Sie die andere.

    
machineghost 12.08.2009 21:24
quelle

Tags und Links