Regex / String kürzen oder verlängern usw.

Begonnen von 87insane, 08 Februar 2019, 17:23:30

Vorheriges Thema - Nächstes Thema

87insane

Guten Abend oder Spätnachmittag an euch alle :)

ich bin gerade mal wieder fleißig am lesen und am lernen. Jetzt stehe ich mal wieder davor Strings zu kürzen. Leider aber (auch nach sehr, sehr viel google), verstehe ich es einfach nicht.
Hatte die Tage z.B. Hilfe bekommen hier, da wurde ~ s/^ESPEasy_//, so vom Anfang eines Strings entfernt. Nun will ich was anderes kürzen aber es auch verstehen.

Kenne ein paar regex Tester, gibt es sowas auch zum testen von "suchen und ersetzen"? Das ^ Anfang ist und $ Ende.. Ja das geht noch aber ich verstehe dieses Thema einfach nicht.

Nehme mal ein Beispiel:

Variable1
Variable2_Hallo
Variable3_Hallo_Welt


Hier würde ich anhand des ESPEasy Beispiels nun wissen wie ich z.B. Variable weg bekomme. Aber ab und an will man die Mitte weg haben oder aber was am Ende. Ich wünsche mir jemanden der mir das mal ganz nett und in Ruhe erklärt.

Was habe ich hier verstanden?
~ s/^ESPEasy_// = s ist sowas wie suchen. ^ Ist der Anfang. ESPEasy_ ist der Teil, der weg soll. Was macht ~ und Wofür die // am Ende?

Danke für alle die sich die Zeit für diesen Härtefall nehmen :)

amenomade

#1
Bedeutung:

$variable =~ s/search_string/replacement/modifiers
=~ ist der Regex Operator
s steht für "sustitute"
/ ist einfach ein Trennzeichen, es geht auch mit { oder mit !
search_string ist der Text zu ersetzen
replacement ist der Ersatz

=~ s/^ESPEasy_// bedeutet "ersetzt ESPEasy_ am Anfang des Strings durch.... nix.

Mehr im Internet. Z.B. https://www.tutorialspoint.com/perl/perl_regular_expressions.htm

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

87insane

Hey,

bedeutet aber im Umkehrschluss, wenn ich am Ende etwas wegschneiden will und es durch "" also nix ersetzen will muss ich nur umgekehrt handeln. Also so:
=~ s/$ESPEasy_//

Ich suche nach einer Art Seite oder ähnlichem auf der ich testen kann. Wenn ich z.B. https://regex101.com/ nehme und unten bei Substitition eingebe, was ich schneiden will kommen keine Ergebnisse. Ggf. komme ich auch nur mit der Seite nicht klar. Ich möchte eben nicht nur hier "klauen" was schon da ist. Ich brauche echt mal einen der mir das aufschlüsselt. Normal verstehe ich solche Dinge gut im praktischem. Leider fehlt mir hier aber eine gute Testmöglichkeit :(

Morgennebel

$ ist das Ende. Weiter gehts nicht. Deshalb ist die Antwort.... nix....

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

87insane

Okay also müsste ich weiter vom Anfang der Zeile suchen mit ^ (Zirkumflex) und dann einfach das Wort bzw. die Zeichenkette, die ich weg haben will eingeben? Was ist wenn diese mehrfach auftaucht?
Habe mir die ganzen Foren und auch Anleitungen durchgelesen. Leider bin ich echt zu dumm dafür. Die Syntax macht in meinem Kopf fast keinen Sinn :-\

Auch wenn ich anhand meines Beispiels suche, ist das Ergebnis nicht das was ich suche.

Oben auf der Seite gebe ich ein wonach ich suche.. Darunter gebe ich ein was z.B. im Code stehen könnte. Zum testen von Suchen bekomme ich das gut hin. Zum testen von Dingen die geschnitten werden sollen garnicht.

amenomade

#5
https://www.tutorialspoint.com/perl/perl_regular_expressions.htm

Und zum Testen:
https://www.tutorialspoint.com/execute_perl_online.php
my $var = "This is mein text und This is mein program";
$var =~ s/This/my/g;
print "$var\n";
$var =~ s/mein/my/;
print "$var\n";
$var =~ s/^my/mein/;
print "$var\n";

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

87insane

Danke - Jetzt hab ich erstmal zu tun!

Danke für die Seite und speziell dieses Beispiel. Jetzt muss ich erst mal EVA spielen.

amenomade

Und wenn Du gut gelernt und geübt hast, sagst Du mir bitte welche Regex zu benutzen, um auf einmal die urprüngliche String wieder zu bekommen. ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus