Unterstützung bei RegEx Stringmanipulation

Crimvel

Lt. Commander
Registriert
Feb. 2011
Beiträge
2.017
Hi zusammen,
vielleicht kann mir hier einer zur Seite stehen.

Ich habe folgenden String:

Code:
Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
dieser soll am Ende so aussehen:
Code:
Intel Core i7-6700K

Mit folgender Expression bin ich schon mal soweit gekommen die Klammern wegzuschneiden:
Code:
"\(.*?\)":""

wäre super wenn mir hier jemand unter die Armen greifen könnte danke im vorraus.
 
Wow flintzen_123 das ding ist der Hammer, danke.
 
Wenn du die Stellen entfernen willst, würde ich das in 3 Schritten machen. Die Funde müssen immer durch einen leeren String ersetzt werden.

Klammern entfernen:
Code:
/\([A-Z]*\)/i
Finde alle Teile die mit einer Klammer auf anfangen und mit einer Klammer zu aufhöhren. In der Mitte alle Zeichen von A bis Z und das case insensitive.

CPU-String ersetzen
Code:
/\s*CPU/
Hier ist kein regulärer ausdrück von nöten. Ich habe ihn nur genommen um alle Arten von Space vor dem CPU zu entfernen. Besser wäre es wohl nur ein Leerzeichen hier zu nutzen, also
Code:
/ CPU/
Damit kann man das dann auch ohne regulären Ausdruck lösen.

Alles hinter dem @-Zeichen entfernen
/ @.*$/
Der Teilstring muss sich am Ende der Eingabe befinden ($) und soll mit einem Leerzeichen und dem @-Zeichen anfangen. Die zeichen zwischen Leerzeichen-@-Zeichen und dem Ende ist egal.

Alternativ kannst du aber auch die Textteile suchen, die dich interessieren.
Möchte allerdings noch sagen, das reguläre Ausdrücke zwar mächtig sind, aber oft leicht anfällig für Fehler.
Ich würde dir eher dazu raten, einen anderen Weg zu gehen. Dafür müsstest du allerdings noch weitere mögliche Eingaben auflisten, damit ein Schema erkannt werden kann. Das wäre generell nütlich, da mit etwas Pech die bisherigen Vorschläge nicht jeden deiner Fälle abdecken.
Dazu kommt dass reguläre Ausdrücke sehr schlechte Performance aufweisen.


flintzen_123 schrieb:
Kleine Anmerkung:
alphanum1, signed_int1 und var1

var1 ist optional und kann auch wegfallen (eben fix getestet, ohne K ist die Regex ergebnislos), wenn wir davon ausgehen, dass nur nur Bezeichnungen von Intel Core-i's geprüft werden.

signed_int1 ist kein signed int, das "+" was in re6 behandelt wird ist überflüssig, würde daher diese 3 z. B. zu folgenden zusammenfassen:
Code:
/i[3,5,7,9]-[0-9]{4}(K)?/

Finde aber den Ansatz die Teile zu suchen, die einen Interessieren besser (aber auch fehleranfälliger) als die ungewollten zu entfernen.
 
Zuletzt bearbeitet:
Bedanke mich für die Hilfe habs umsetzen können :)
 
  • Gefällt mir
Reaktionen: Crast
Zuletzt bearbeitet:
Zurück
Oben