RegEx hilfe benötigt
Rusty83 24.06.2024 - 15:25 1257 12
Rusty83
Bloody Newbie
|
Hallo zusammen!
Ich versuche gerade eine regex zusammenzustellen, dass alles ab dem 2ten Vorkommen eines bestimmten Zeichens abschneidet bzw. findet.
Hier mal Beispiele:
Soll: =ANLAGE+ORTSKENNZEICHEN-12G1-XG1 Ist: =ANLAGE+ORTSKENNZEICHEN-12G1
Soll: =ANLAGE+ORTSKENNZEICHEN-KF1-12XG1 Ist: =ANLAGE+ORTSKENNZEICHEN-KF1
wenn kein zweites "-" vorkommen eben nichts machen Soll: =ANLAGE+ORTSKENNZEICHEN-12G1 Ist: =ANLAGE+ORTSKENNZEICHEN-12G1
Ich hab schon ziemlich viele Varianten die ich gefunden habe ausprobiert aber leider hat nichts zum Ziel geführt.
Viell. kann mir hier jemand weiterhelfen.
Vielen Dank bereits im Voraus!
|
Longbow
Here to stay
|
die lazy-af lösung wär string split auf "-" und einfach nur die ersten beiden element kombinieren
|
Rusty83
Bloody Newbie
|
Hi Longbow,
hättest du dazu ein Beispiel.
Den besten Ansatz den ich bis jetzt habe ist folgender: ^(?:[^-]*\-){1}([^-]*)
Jedoch wird hier der erste Teil gefunden den ich behalten will d.h. es sollte der Teil gefunden werden der damit übrig bleibt.
|
meepmeep
Here to stay
|
^([^-]*-[^-]*)(.*)$ ANLAGE+ORTSKENNZEICHEN-12G1-XG1 Group 1: "ANLAGE+ORTSKENNZEICHEN-12G1" Group 2: "-XG1"
könntest du uns infos zur Programmiersprache/Umgebung geben, dann können wir vielleicht noch hilfreicher sein.
|
Rusty83
Bloody Newbie
|
Danke, werde ich morgen gleich testen.
Ist keine bestimmte Programmiersprache. Reguläre Ausdrücke können in der Software EPLAN verwendet werden und in Ersetzungstabellen genutzt werden - dort wird das benötigt um ein Vollständiges BMK zu "beschneiden"
|
Smut
takeover & ether
|
regex ist ein sehr guer use-case für LLM ai. vorallem weil man ihn schnell testen kann mit online regex testern. einfach das regex result der ai eingeben und gegen testcases prüfen.
|
userohnenamen
leider kein name
|
|
Longbow
Here to stay
|
Ich hab keine Ahnung von EPLAN, schaut aber so aus als könnte das C#Insofern bin ich immer noch dafür einfach bei \- zu splitten und dann n benötigte Fragmente wieder aufszummieren. Im Regelfall kommt kein Anlagenbauer daher und beschwert sich, dass ich Umbenennungen gefälligst aber schon in O(n*log(n)*pi*1/sqrt(2))*135 zu lösen habe.
|
hynk
Super Moderatorlike totally ambivalent
|
regex101.com zum gegenprüfen macht Sinn. Für den Schritt davor kann man den hier mal probieren
|
Rusty83
Bloody Newbie
|
@meepmeep: Danke für den Tipp aber, aber leider funktioniert es nicht wie erhofft
@Longbow: ich denke ich weis was du meinst, aber kann es leider nicht umsetzen, hab da zu wenig Erfahrung
@hynk: Super Seite - Danke! Jedoch bekomme ich es damit auch nicht richtig hin.
ist es möglich vom gesamten String den Match zu invertieren damit das nicht gefundene als eigentlicher match übrig bleibt?
Was in der Software noch geht ist folgendes: Man kann die Abfragen "fortsetzen" viell. wird es damit einfacher?
Jedenfalls mal Vielen Dank für all die Antworten!
|
meepmeep
Here to stay
|
entweder ich habs noch nicht verstanden, oder du musst ein bisschen genauer werden.
der Search/Replace dialog in zB VisualStudio Code entfernt alles hinter dem zweiten "-" bei folgenden Settings Search: "^([^-]*-[^-]*)(.*)$" Replace: "$1"
du musst die richtige group referenzieren. group1 enthält alles was du haben willst (denke ich), group2 alles was weg soll.
|
Rusty83
Bloody Newbie
|
in der Software kann ich nur Suchen und das was gefunden wird, wird ersetzt durch entweder nichts oder einen bestimmten Text. Hier kann ich aber keine Variable oder sonstiges einfügen.
Z.B. mit dem hier: ^(?:[^-]*\-){1}([^-]*) wird genau das gefunden, was ich eigentlich haben will, in der Software wird aber genau das "ersetzt"/gelöscht, da es gefunden wird mit diesem Ausdruck.
Sorry wenn ich das nicht besser beschreiben kann.
|
Rusty83
Bloody Newbie
|
Hab jetzt eine Lösung für mich gefunden: Es wird zuerst alles nachdem ersten - extrahiert. Danach von diesem Teil alles nachdem noch vorkommenden - entfernt (inkl. -).
Somit bleibt der Ausdruck vom ersten - vorhanden. Dann baue ich alles vor dem ersten - inkl. dem zuvor extrahiertem Ausdruck zusammen.
Etwas umständlich, aber in EPLAN anscheinend nicht anders lösbar.
Danke an alle für ihren input!
|