kostenloser Webspace werbefrei: lima-city


Suche Regulären Ausdruck für doppelte Wörter

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    s*****d

    Hi!
    Ich schildere erst einmal das Problem:
    Ich habe eine Tabelle. In dieser Tabelle sind Wörter, aber diese Wörter sind leider immer doppelt. Da die Tabelle ziemlich groß ist, möchte ich nicht in jedes Feld gehen, um das doppelte Wort zu löschen. Daher habe ich die Tabelle aus Excel in eine Textdatei kopiert, damit ich mit einem regulärem Ausdruck und PHP den String bearbeiten kann, sodass das ganze jetzt so aussieht:
    Simon Simon	Wort Wort	zweiteswort zweiteswort

    Also immer das Wort, dann Leerzeichen, dann das Wort nochmal und dann ein Tabulator.
    Wie lautet der reguläre Ausdruck dazu, wenn ich will, dass der obenstehende Code durch folgendes ersetzt wird:
    Simon	Wort	zweiteswort

    Also immer das Leerzeichen und das doppelte Wort weggemacht... Nur die Tabulatoren und das "original"-Wort bleiben.

    MfG. Simon D.

    Beitrag zuletzt geändert: 10.7.2014 13:35:15 von simon-d
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Dieses Beispiel scheint zu funktionieren:
    <?php
      $input="Simon Simon	Wort Wort	zweiteswort zweiteswort	";
      $output=preg_replace('/(\S+) \1	/','$1	',$input);
      echo $output;
    ?>
    Aber ohne Garantie auf Zuverlässigkeit. Das ist einer meiner ersten selbst erstellten regulären Ausdrücke.
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Ich würde es so lösen:
    <?php
    
    header('content-type: text/plain');
    
    $content = <<< ETX
    Simon Simon	Wort Wort	zweiteswort zweiteswort
    Bla Bla	XYZ XYZ	Gurke Gurke
    ETX;
    
    $search = '|^(\w+) \1\t(\w+) \2\t(\w+) \3$|m';
    $replace = "\\1\t\\2\t\\3";
    
    $result = preg_replace($search, $replace, $content);
    echo($result);
    Als Ergebnis kommt dabei heraus:
    Simon	Wort	zweiteswort
    Bla	XYZ	Gurke


    Mist, da war wer schneller als ich … egal, ich hab ein etwas anderes Regex welches keinen Tabulator am Zeilenende der Eingabedaten erfordert.
  5. simon-d schrieb:
    Daher habe ich die Tabelle aus Excel in eine Textdatei kopiert,

    Die Arbeit hätte Excel für dich doch schon erledigen können:

    Daten -> Datentools -> Duplikate entfernen.
  6. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    fatfreddy schrieb:
    simon-d schrieb:
    Daher habe ich die Tabelle aus Excel in eine Textdatei kopiert,

    Die Arbeit hätte Excel für dich doch schon erledigen können:

    Daten -> Datentools -> Duplikate entfernen.

    Naja, nicht wirklich. Da die doppelten Worte (wie ich dem Beispiel entnehme) in einer Zelle stehen. Da kann das Tool leider nicht weiterhelfen.

    Ansonsten würde ich auch die Version von hackyourlife bevorzugen, da diese weniger Fehleranfällig ist, da hier jeweils die komplette Zeile verwendet wird.

    Bei dem Beispiel von fuerderer sollte der Regex eher so ausschauen:
    <?php
      $output=preg_replace('/(\S+) \1(\t|$)/','$1$2',$input);

    Hier ist es dann nämlich egal ob das doppelte Wort vor einem Tab steht oder am Ende einer Zeile.
  7. thomasba schrieb:
    Naja, nicht wirklich. Da die doppelten Worte (wie ich dem Beispiel entnehme) in einer Zelle stehen. Da kann das Tool leider nicht weiterhelfen.

    Sollte das so sein, hast Du natürlich recht.
    Wegen " Da die Tabelle ziemlich groß ist, möchte ich nicht in jedes Feld gehen" bin ich von einer Spalte mit einem Wort pro Zeile ausgegangen.

    Beitrag zuletzt geändert: 10.7.2014 19:47:06 von fatfreddy
  8. 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!