Kann ich mit Regex sich wiederholende Wortgruppen erkennen?

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Translating-IT.

    Kann ich mit Regex sich wiederholende Wortgruppen erkennen?

    Hallo,

    mit Regex aufeinanderfolgende Wörter (z. B. ich gehe gehe weg) zu finden ist kein Problem mithilfe von (\b\S+\b)\s+\b\1\b, aber wie schaut es mit Wortgruppen aus, die im selben String mehrmals hintereinander vorkommen?

    Beispiel: Gestern sind wir schon sind wir schon wieder reingefallen.

    Hier soll erkannt werden, dass "sind wir schon" mehrmals vorkommt. Es können 2 bis n Wörter sein, die gefunden werden müssen.

    Eine Möglichkeit ohne Regex wäre die Wörter der Reihe nach zu vergleichen: wenn "sind" im String nochmal vorkommt, dann schauen ob "sind wir" im String nochmal vorkommt usw. bis keine Dopplung der Wörterfolge im String mehr auftritt. Sobald der loop unterbrochen wird, ist die letzte gefundene Übereinstimmung das Ergebnis und beide Strings sollen hervorgehoben werden.

    Aber Regex könnte da schneller sein, falls es denn möglich ist. Gefunden habe ich im Netz dazu noch nichts, oder meine Suchanfragen über die letzten 2 Wochen hinweg sind einfach nur falsch gestellt.

    Edit: Gott bin ich blind … statt das ganze auf Wörter zu begrenzen, einfach nur so testen: (.{2,})\s+\b\1\b.

    Ich brauche doch nur Strings zu vergleichen und nicht Wortgruppen. Da habe ich zu eng gedacht und mit dem neuen Regex spare ich mir auch noch den Regex für die Wortdopplungen, da hiermit beides erkannt wird.

    LG,
    Pascal
    :!: Leider hab ich nicht immer Zeit zum Programmieren, da es eher ein Hobby ist. Falls ich mal im Forum ne Frage stelle und länger nicht antworte, nicht böse sein: Ich bin dann entweder beruflich oder mit der Familie zu sehr eingespannt oder einfach zu müde. Das kann erfahrungsgemäß auch mal über Wochen dauern, aber ich melde mich immer und setze die Frage ggf. auf beantwortet.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Translating-IT“ ()

    siehe mein Edit ;)
    :!: Leider hab ich nicht immer Zeit zum Programmieren, da es eher ein Hobby ist. Falls ich mal im Forum ne Frage stelle und länger nicht antworte, nicht böse sein: Ich bin dann entweder beruflich oder mit der Familie zu sehr eingespannt oder einfach zu müde. Das kann erfahrungsgemäß auch mal über Wochen dauern, aber ich melde mich immer und setze die Frage ggf. auf beantwortet.