efinf:blc2016:regex

This is an old revision of the document!


Das Schweizer Sackmesser der String-Analyse und Verarbeitung.

Testen

str = "ananas and bananas"
if str =~ /a.a/
  puts "match't"
else
  puts "kein Match"
end

Extrahieren

scan liefert ein Array, das für jeden Match den enstprechenden String enthält (wenn keine Gruppen in der RegEx sind), oder für jeden Match ein Array mit allen Gruppenmatches.

str = "pineapple and bananas"
p str.scan(/a./)
p str.scan(/a(.)/)

Modifizieren

gsub ersetzt jeden Match mit dem angegeben String. Gruppenmatches können mit “\\1” etc. verwendet werden.

gsub ohne ! modifiziert den String nicht und liefert einen neuen String. gsub! (mit !) modifizert den String und liefert diesen als Resultat, ausser wenn kein Match vorliegt wird nil zurückgeliefert.

str = "pineapple and bananas"
p str.gsub(/a./, "vx")
p str.gsub(/a(.)/,"a->\\1<-")
  • Installieren Sie den Chrome (sudo apt-get install chromium-browser)
  • Drücken Sie F12, um die Debug-Suite zu starten und aktivieren Sie den Tab “Network”
  • Gehen Sie auf die Startseite von Nesa: https://ksbg.nesa-sg.ch/loginto.php?mode=0&lang=
  • Rechts-Klick auf ersten Netzwerkzugriff: “copy as cURL” * Die curl-Kommandozeile in eine Datei speichern (z.B. startseite.curl)

Das curl-Kommando muss jetzt noch ein bisschen angepasst werden, damit die Cookies gespeichert und wiederverwendet werden:

  1. Fügen Sie die Optionen -b nesa-cookies.txt -c nesa-cookies.txt hinzu. Damit werden Cookies von der Datei nesa-cookies.txt gelesen und neue wieder dort gespeichert.
  2. Löschen Sie die entsprechende Header Option (falls vorhanden), die ein altes Cookie sendet (-H etc..)

Im login-Formular ist ein Hash, der beim login mitgesendet werden muss (damit werden wohl auch Timeouts festgestellt). Diesen gilt es zu extrahieren:

startseite = `bash startseite.curl`.force_encoding("ISO-8859-1").encode("UTF-8")
puts startseite
 
# loginhash=startseite.scan(/..../)[0][0]  # FIXME
puts "-> HASH <-"
puts loginhash
  • Loggen Sie sich auf Nesa ein.
  • Rechts-Klick auf ersten Netzwerkzugriff: “copy as cURL”
  • Rechts-Klick auf ersten Netzwerkzugriff: “copy as cURL” * Die curl-Kommandozeile in eine Datei speichern. *ACHTUNG* diese Datei enthält ihr Passwort im Klartext! Am besten ändern Sie ihr Passwort danach (oder auch davor).
  • efinf/blc2016/regex.1479136598.txt.gz
  • Last modified: 2016/11/14 16:16
  • by Ivo Blöchliger