kostenloser Webspace werbefrei: lima-city


Regex - Punkte mit Ausnahme ersetzen

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    hc-tools

    Kostenloser Webspace von hc-tools

    hc-tools hat kostenlosen Webspace.

    Hallo zusammen,

    ich versuche momentan einen Text mit Regex Satz für Satz zu zerlegen. D.h. an jedem . ? und ! und Zeilenumbruch den Satz in ein array schreiben. Das funktioniert auch mit
    (\.|!|\?|\n)

    schon ganz gut, allerdings gibt es ja auch Ausnahmen. So wird der Satz auch in ein neues Array geschrieben, wenn es gar keinen Anlass dazu gibt, wie z.B. bei den Abkürzungen ca. mio. oder bei Zahlen 1234.5678. Bei Zahlen würde ich das zwar so umsetzen:
    [0-9]\.[0-9]

    allerdings weiß ich nicht, wie ich nicht, wie ich das ganze so verbinde, dass der Punkt nur dann ersetzt wird, wenn keine Abkürzung dazugehört.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Es gibt verschiedene Regex-Dialekte/Implementierungen. PHP unterstützt sogar 2: POSIX und PREG. Welchen Dialekt verwendest du?

    Bezüglich der Zahlen: Dafür musst du den ersten Regex
    (\.|!|\?|\n)

    so ändern, dass nach dem Satzzeichen ein Leerzeichen kommt (sieht man natürlich jetzt schlecht in der Code-Anzeige). Sofern der Text sauber geschrieben ist, sollte nach einem Satzzeichen immer ein Leerzeichen kommen.

    Abkürzungen sind rein grammatikalisch wahrscheinlich nicht erkennbar. Sofern du eine Übersicht über die möglichen Abkürzungen hast, schlage ich vor, dass du jede Abkürzung durch die Langform des Wortes ersetzt, bevor du mit den regulären Ausdrücken den Text in einzelne Sätze unterteilst.
  4. Autor dieses Themas

    hc-tools

    Kostenloser Webspace von hc-tools

    hc-tools hat kostenlosen Webspace.

    Die Idee mit dem Ersetzen der Abkürzungen finde ich erhlich gesagt sogar besser als per Regex. Selbst, wenn dies am Ende langsamer wird, habe ich zum einen die Möglichkeit die Abkürzungen in einem Array, Datenbank oder Textfile viel leichter zu verwalten und zum anderen kann ich bei der weiteren Auswertung des Texts sicher sein, dass wenn ich nach Millionen suche, da auch wirklich Millionen und nicht Mio. steht.

    Was das Leerzeichen nach dem Punkt angeht, habe ich allerdings eine andere Lösung gefunden. Anstatt ein Leerzeichen hinter dem Punkt vorrauszusetzen, maskiere ich den Punkt zwischen zwei Zahlen mit Regex per
    ([0-9]).([0-9])

    und ersetze den Fund entsprechend. Nach der weiteren Analyse des Texts wird dann die Maske zur Rückgabe an den User wieder durch einen Punkt ersetzt.
    ([0-9])\<punktmaske>([0-9])


    Jetzt brauche ich eigentlich nur noch eine Liste, mit Abkürzungen, die mit einem Punkt aufhören. Kennt da jemand eine Seite, die sowas am besten in XML etc. formartiert anbietet?

    Edit: Unter http://de.wikipedia.org/wiki/Portal:Abk%C3%BCrzungen/Gebr%C3%A4uchliche_Abk%C3%BCrzungen habe ich die wichtigsten Abkürzungen gefunden. Ich werde mich dann mal rangeben eine entsprechende XML Datei o.ä. :lol: zu erstellen.

    Beitrag zuletzt geändert: 3.9.2013 18:35:49 von hc-tools
  5. XML? Wozu brauchst du für so eine einfache Sache XML? Du kannst doch einfach eine tab-separierte Datei mit Abkürzungen und deren Langformen verwenden.

    mio	Million
    etc.	et cetera
    s.o.	siehe Oben

    Und die Datei dann zeilenweise einlesen und bei \t splitten.
  6. Autor dieses Themas

    hc-tools

    Kostenloser Webspace von hc-tools

    hc-tools hat kostenlosen Webspace.

    Da ist natürlich was dran. XML ist da wirklich etwas überladen. :wall:
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!