2017-05-06 6 views
-1

Hier ist, was ich versuche zu tun. Ich muss einige Amazon-Daten bearbeiten, die in einer Tabelle enthalten sind. Hier ist ein Beispiel für die erste Zelle der Text, den ich in der Tabelle haben (die Anführungszeichen sind nicht Teil der aktuellen Tabellenzelle Inhalte):Regex - Finden Sie alles vor und nach einer dynamischen Gruppe von Zeichen

„# 864 in Werkzeuge & Home Improvement (Top 100)“

Ich muss alles vor und nach der Kategorie (fett) löschen. Die Kategorie wird sich ändern - sie ist nicht in jeder Tabellenkalkulationszelle gleich. Im obigen Beispiel müsste "# 864 in" gelöscht werden (die Zahl hat immer ein Rautenzeichen, gefolgt von einer Zahl ... 1 bis möglicherweise Millionen, gefolgt von einem Leerzeichen, gefolgt von "in" gefolgt von einem weiteren Leerzeichen) .

Außerdem wird es immer "(Top 100)" unmittelbar nach der Kategorie geben. Ich muss all das und eine Menge anderer Sachen in der Zelle finden (und schließlich löschen) (es gibt eine Menge Zeug nach dem "(Top 100)" - ich habe es einfach nicht eingeschlossen - Wörter, Zeichen, getrennte Zeilen)/Absätze usw.).

Ich brauche nur die Kategorie. Ich stecke fest! Hoffentlich macht das Sinn. Jede Hilfe wäre willkommen. Vielen Dank.

+0

Haben Sie ein Beispiel dafür, was Sie versucht haben? Und welche Sprache benutzt du? Visual Basic oder etwas anderes? –

+0

Sie sollten den Beitrag mit der Sprache versehen, die Sie verwenden. –

+0

Ich verwende keine bestimmte Sprache.Ich verwende nur die Option zum Suchen und Ersetzen von Google Spreadsheets mit einer Regex-Suchoption. – user1074239

Antwort

0

In Google Text & Tabellen:

Suche: ^#\d+ in (.*) \(Top 100\).*

ersetzen: $1

+0

Ich habe das versucht. Kein Glück. Vielen Dank. Ich verwende eine Suche und ersetze sie in Google Spreadsheets. Also muss ich alles vor und nach der Kategorie finden und dann alles vor und nach der Kategorie mit nichts ersetzen. Auf diese Weise wird alles in der Zelle außer der Kategorie entfernt. – user1074239

+0

Aktualisiert für Google Spreadsheets. Arbeite für mich mit deinem Beispiel String! –

+0

das funktioniert perfekt ;-) Das einzige Problem, das ich jetzt habe, ist, dass es eine Menge Sachen NACH dem "(Top 100)" gibt. Hier ist ein Screenshot: https://www.evernote.com/l/ABgP6UxFjI9FHqmTiUyPnqZzGRZCzDpVjks. Jede Zelle hat andere Sachen, die auch entfernt werden müssen. Gibt es eine Chance, den Regex zu optimieren? – user1074239

0

Erste Voraussetzung: Um die zusätzlichen Zeilen nach oben zu entfernen 100

Suche: ^#[\d,]+ in (.*) \(Top 100\)[\s\S]*

Ersetzen $1

Ich bemerkte auch einen anderen Fehler, dass, wenn die Startnummer Kommas hat, die Regex nicht enthalten war, so dass ich fix für das auch. Jetzt wird es paßt auch '# 10.286 in ...' usw.

Zweite Voraussetzung: Um alles in der Zelle mit Ausnahme der letzten Nummer zu entfernen:

Suche: [\s\S]*?([\d,.]+)$

ersetzen $1

Ersetzt 467/468 Zellen

Hinweis: mit den Daten rumgespielt und beide regex scheinen gut zu funktionieren. Stellen Sie sicher, dass Sie die richtige Spalte auswählen, bevor Sie die Regex-Ersetzung ausführen. Denken Sie auch daran, dass das erste nicht für Zellen funktioniert, die nicht (Top 100) haben - es gab einige wenige.

Demo Blatt mit regex replace obigen Ausdrücken durchgeführt: link

hoffe, das hilft!

+0

Vielen Dank! Das hat perfekt funktioniert. :-) Ich wünschte ich wüsste mehr über Regex. Es ist wirklich nützlich. – user1074239

+0

Sie können hier auf Regex beginnen: http://www.rexegg.com/. Wenn meine Antwort zur Lösung Ihres Problems beigetragen hat, möchten Sie sie möglicherweise als akzeptierte Antwort markieren. Vielen Dank! – degant

Verwandte Themen