Frage

Hier ist das Problem:

split=re.compile('\\W*')

Dieser reguläre Ausdruck funktioniert gut, wenn mit regelmäßigen Worten zu tun, aber es gibt Gelegenheiten, bei denen ich den Ausdruck brauchen Worte wie käyttäj&aml;auml; aufzunehmen.

Was soll ich auf die regex fügen Sie die & und ; Zeichen enthalten?

War es hilfreich?

Lösung

Sie wollen wahrscheinlich das Problem umgekehrt nehmen, das heißt alle Zeichen ohne Leerzeichen zu finden:

[^ \t\n]*

Oder Sie wollen die zusätzlichen Zeichen hinzuzufügen:

[a-zA-Z0-9&;]*

Falls Sie HTML-Entitäten passen, sollten Sie versuchen, so etwas wie:

(\w+|&\w+;)*

Andere Tipps

Ich würde die Entitäten als Einheit behandeln (da sie auch numerischen Zeichencodes enthalten kann), in dem folgenden regulären Ausdruck resultierende:

(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+

Das paßt

  • entweder ein Wortzeichen (einschließlich „_“) oder
  • eine HTML-Einheit, bestehend aus
    • das Zeichen „&“,
      • das Zeichen „#“,
        • das Zeichen „x“, gefolgt von mindestens einer hexadezimalen Ziffer oder
        • mindestens eine Dezimalstelle oder
      • mindestens ein Buchstabe (= benannte Einheit),
    • ein Semikolon
  • mindestens einmal.

/ EDIT:. Dank ΤΖΩΤΖΙΟΥ für einen Fehler Hinweis auf

Sie sollten eine Zeichenklasse machen, die die zusätzlichen Zeichen umfassen würde. Zum Beispiel:

split=re.compile('[\w&;]+')

Dies sollte den Trick tun. Zu Ihrer Information

  • \w (Kleinbuchstaben 'w') übereinstimmt Wortzeichen (alphanumerische)
  • \W (Kapital W) ist eine negierte Zeichenklasse (dh, es stimmt mit einem nicht-alphanumerischen Zeichen)
  • * entspricht 0 oder mehrmals und + passt ein oder mehrere Male, so wird * nichts gefunden (auch wenn es keine Zeichen gibt es).

Sieht aus wie dies der Trick:

Split = re.compile ( '(\\ W + & \\ W +;) *')

Danke für die Vorschläge. Die meisten von ihnen funktionierte gut auf Reggy, aber ich verstehe nicht ganz, warum sie mit re.compile fehlgeschlagen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top