Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

perl - reguläre ausdrücke

Empfohlene Antworten

Veröffentlicht

hi leute,

ich habe ein perl-skript, dass ne text datei ausliest und die daten, die hinter dem ": " stehen in die jeweilige variablen schreibt, so sollte "$seite=1" sein. Ist es aber nicht, sondern "1 ", also mit nem leerzeichen dahinter.

Also hab ich "$seite=~s/ //g if($seite=~/ /);" in die nächste zeile geschrieben.. dies ändert jedoch auch nichts..

wisst ihr wo das problem liegt??

kann es sein, dass das return in der textdatei mit ausgelesen wird? das probier ich gleich nochmal aus.. wenn das nicht geht, weiß ich nicht mehr weiter..

gruß attheo

p.s. Inhalt der text datei:

seite: 1

titel: Meine_Seite

$seite=~s/ //g if($seite=~/ /);

Dann zerpflücken wir das Ding mal:

In allen Zeilen in denen ein Leerzeichen vorkommt werden Sie entfernt.

Was Du wolltest ist aber wohl:

open FH, "< datei";

while <FH> {

print "$1\n" if m/: (.*)/o;

}

close FH;

habs hingekriegt!!

hätte einfach nur anstatt

$seite=~s/ //g if($seite=~/ /); $seite=~s/\s//g;

nehmen müssen..

@dr.disk:

würde mich aber trotzdem interessieren was genau in deiner lösung gemacht wird.

" while <FH> {print "$1\n" if m/: (.*)/o; }"

ich kenn nur @inhalt=<FH>; was macht den while? zeilenweise? was war nochmal $1? und den kommpletten if-zweig versteh ich auch nicht :-(

klär mich bitte auf :)

Hier nochmals der Code:

while <FH> {

print "$1\n" if m/: (.*)/o;

}

Also dann mal los:

while <FH> liest die Datei Zeilenweise ein, da nirgend steht in welche Variable wird bei Perl $_ genommen. Wenn Du $_ nicht kennst: Buch oder manpage lesen - mit der kann man wunderhübsche Sachen machen.

m/: (.*)/o ist Patternmatching, also wahr sobald der Ausdruck paßt. Ich suche nach einem :, gefolgt von einem Leerzeichen und danach alles was noch kommt. Punkt steht für ein beliebiges Zeichen, * für beliebig oft. Die Klammern weisen den Teil auf den der Ausdruck zwischen ihnen paßt einer Variablen zu, nämlich $#, wobei # für die Nummer des Klammernpaares steht. Ich hab nur eine Klammer, deswegen heißt die bei mir $1. Jetzt dürfte auch das print klar sein: gib $1 und ein newline aus, aber nur dann wenn das Patternmatching erfolgreich, also true war.

Das o nach dem Patternmatching steht für optimize, damit wird die RegEx kompiliert. Vorteil: sobald ich Sie nochmals brauche geht's schneller. Nachteil: sollten da Variablen drin stehen werden Änderungen an diesen ignoriert.

Hoffe mal, die Erklärung hilft weiter.

vielen dank!!

weiß jetzt bescheid..

gruß attheo

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.