Suche Regulären Ausdruck für doppelte Wörter
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
ausdruck
beispiel
bevorzugen
code
doppelte wort
doppelten worte
duplikat
entfernen
feld
input
output
problem
stehen
tabelle
textdatei
tool
url
wort
zeile
zelle
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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. -
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. -
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. -
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage