FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: 87insane am 08 Februar 2019, 17:23:30

Titel: Regex / String kürzen oder verlängern usw.
Beitrag von: 87insane am 08 Februar 2019, 17:23:30
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 :)
Titel: Antw:Regex / String kürzen oder verlängern usw.
Beitrag von: amenomade am 08 Februar 2019, 18:01:33
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

Titel: Antw:Regex / String kürzen oder verlängern usw.
Beitrag von: 87insane am 08 Februar 2019, 18:52:32
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 :(
Titel: Antw:Regex / String kürzen oder verlängern usw.
Beitrag von: Morgennebel am 08 Februar 2019, 18:53:43
$ ist das Ende. Weiter gehts nicht. Deshalb ist die Antwort.... nix....

Ciao, -MN
Titel: Antw:Regex / String kürzen oder verlängern usw.
Beitrag von: 87insane am 08 Februar 2019, 18:57:38
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.
Titel: Antw:Regex / String kürzen oder verlängern usw.
Beitrag von: amenomade am 08 Februar 2019, 19:16:18
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";

Titel: Antw:Regex / String kürzen oder verlängern usw.
Beitrag von: 87insane am 08 Februar 2019, 19:32:13
Danke - Jetzt hab ich erstmal zu tun!

Danke für die Seite und speziell dieses Beispiel. Jetzt muss ich erst mal EVA spielen.
Titel: Antw:Regex / String kürzen oder verlängern usw.
Beitrag von: amenomade am 08 Februar 2019, 20:02:41
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. ;)