Regulärer Ausdruck: Was bedeutet das $?

Regulärer Ausdruck: Was bedeutet das $?

am 14.02.2006 16:04:27 von Anton Berg

Hallo,

ich habe folgenden regulären Ausdruck gefunden:
$file =3D~/^\.\.?$/
Nun frage ich mich was das $-Zeichen in dem regulären Ausdruck zu
suchen hat, da ich in meinem Buch (Perl-Kochbuch) leider bisher keine
Erklärung dazu finden konnte.

Vielen Dank für Eure Hilfe,
Anton

Re: RegulärerAusdruck: Was bedeutet das $?

am 14.02.2006 16:50:33 von Christian Lackas

* Anton Berg [2006-02-14]:

Hallo Anton,

> $file =~/^\.\.?$/
> Nun frage ich mich was das $-Zeichen in dem regulären Ausdruck zu
> suchen hat, da ich in meinem Buch (Perl-Kochbuch) leider bisher keine
> Erklärung dazu finden konnte.

die Perl-Dokumentation hilft dir da weiter:

perldoc perlre
$ Match the end of the line (or before newline at the end)

Das Kamel-Buch wäre als Referenz deutlich besser geeignet. Siehe auch
die FAQ dieser Newsgroup:

http://www.worldmusic.de/perl/

Gruß
Chrisitan

--
Frisch gequarkt ist halb geronnen.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker

Re: RegulärerAusdruck: Was bedeutet das $?

am 14.02.2006 16:55:06 von Peter Ehrenberg

"Anton Berg" writes:

> [...] Nun frage ich mich was das $-Zeichen in dem regulären Ausdruck zu
> suchen hat [...]

Der Programmaufruf

perldoc perlre

ist dein Freund.


Peter

Re: Regulärer Ausdruck: Was bedeutet das $?

am 14.02.2006 17:11:00 von Alex

Am 14.02.06 um 07:04 schrieb *Anton* folgendes:

> Hallo,

> ich habe folgenden regulären Ausdruck gefunden:
> $file =~/^\.\.?$/
> Nun frage ich mich was das $-Zeichen in dem regulären Ausdruck zu
> suchen hat, da ich in meinem Buch (Perl-Kochbuch) leider bisher keine
> Erklärung dazu finden konnte.

Das ist ebenso wie der ^ ein Meta-Zeichen für die Zeilenbegrenzung.

^ = Am Anfang der Zeile
$ = Am Ende der Zeile

Bis dann,
Alex

--
*Alex* - die *zarteste* Versuchung seit es Schokolade gibt!

Re: RegulärerAusdruck: Was bedeutet das $?

am 14.02.2006 19:40:29 von Lukas Mai

Anton Berg schrob:
> Hallo,
>
> ich habe folgenden regulären Ausdruck gefunden:
> $file =~/^\.\.?$/
> Nun frage ich mich was das $-Zeichen in dem regulären Ausdruck zu
> suchen hat, da ich in meinem Buch (Perl-Kochbuch) leider bisher keine
> Erklärung dazu finden konnte.

Andere haben schon auf perldoc perlre verwiesen, aber der Klarheit
halber möchte ich folgendes hinzufügen:

"$" matcht beim Ende des Strings oder vor "\n" am Ende des Strings. Es
ist also äquivalent zu "(?=\n?\z)". "\z" passt nur auf das Ende des
Strings. Wenn /m aktiv ist, matcht "$" bei jedem "\n" im String. /s
hingegen ändert nur die Bedeutung von ".": Normalerweise ist "." das
gleiche wie "[^\n]"; /s sorgt dafür, dass "." wirklich auf jedes Zeichen
passt.

Ich sage das deswegen, weil die Dokumentation dazu nicht gerade klar ist
("multiline" und "single line" sind nicht sonderlich aussagekräftig),
und viele Perl-Neulinge wissen nicht, was der Unterschied zwischen $ und
\z ist, oder was /s und /m genau machen.

Leider gilt das auch für Nicht-Neulinge:
| $toencode =~ s{'}{'}gso;
stammt aus CGI.pm und ist absoluter Müll: /s und /o haben keinerlei
Effekt, und vom Gebrauch von /o wird überhaupt abgeraten.

HTH, Lukas

PS: perlretut, perlreref und perlrequick wären vielleicht auch
interessant.

Re: Regulärer Ausdruck: Was bedeutet das $?

am 15.02.2006 16:44:27 von Ferry Bolhar

Lukas Mai:

> Andere haben schon auf perldoc perlre verwiesen, aber der Klarheit
> halber möchte ich folgendes hinzufügen:

[...]

Ergänzen sei noch vermerkt, dass ^ und $ den regulären Ausdruck an
den Stringanfang bzw. das Stringende "binden" und dadurch den Such-
vorgang beschleunigen können, weil bestimmte Optimierungsalgorithmen
greifen - zumindest bei dem Typ von Suchmaschine, den Perl verwendet.

> und vom Gebrauch von /o wird überhaupt abgeraten.

Warum? /o hat durchaus seine Berechtigung.

Andere Frage: kann mir jemand wirklich genau erklären, was "study"
eigentlich macht? Wann kann/soll man es verwenden, wann nicht?

LG, Ferry

--
Ing. Ferry Bolhar
Municipality of Vienna, Department 14
A-1010 Vienna / AUSTRIA
E-mail: bol@adv.magwien.gv.at

Re: Regul?rer Ausdruck: Was bedeutet das $?

am 15.02.2006 19:06:43 von Lukas Mai

Ferry Bolhar schrob:
> Lukas Mai:
>
>> und vom Gebrauch von /o wird ?berhaupt abgeraten.
>
> Warum? /o hat durchaus seine Berechtigung.

qr// ist zum Vorkompilieren viel besser geeignet (und flexibler).

> Andere Frage: kann mir jemand wirklich genau erkl?ren, was "study"
> eigentlich macht? Wann kann/soll man es verwenden, wann nicht?

perldoc -f study

Aber ich persönlich habe study noch nie gebraucht.

Lukas

Re: Regul?rer Ausdruck: Was bedeutet das $?

am 16.02.2006 08:40:16 von Ferry Bolhar

"Lukas Mai" schrieb im Newsbeitrag
news:dsvqjj$ufq$03$1@news.t-online.com...

>>> und vom Gebrauch von /o wird ?berhaupt abgeraten.
>>
>> Warum? /o hat durchaus seine Berechtigung.
>
> qr// ist zum Vorkompilieren viel besser geeignet (und flexibler).

Wenn es vorhanden ist. Ich muss teilweise noch mit so antiquierten
Versionen wie 5.004 und 5.005 arbeiten; da gibt es qr// noch nicht,
sondern nur /o, um ein Rekompilieren einer Regex, die einen oder
mehrere Skalare enthält, zu unterbinden. Da ich meine Skripts so
schreiben muss, dass sie _überall_ laufen, verwende ich /o.

> > Andere Frage: kann mir jemand wirklich genau erkl?ren, was "study"
> > eigentlich macht? Wann kann/soll man es verwenden, wann nicht?
>
> perldoc -f study

Und du würdest diese Erklärung als "genau" (und vor allem als
"verständlich") bezeichnen?

> Aber ich persönlich habe study noch nie gebraucht.

Ich auch nicht. Aber möglicherweise nur, weil ich eben nicht genau
wusste, was es wirklich tut. Außerdem heißt das ja nicht, dass ich es
nicht vielleicht irgendwann einmal doch brauchen werde.

Wenn ich das richtig verstanden habe, führt study u.U. zu einem
Performancegewinn, wenn ein und derselbe String wiederholt in
regulären Ausdrücken verwendet wird, weil über den String bestimmte
Eigenschaften gesammelt werden, die später in den Regex-en für das
Matching nicht mehr ermittelt werden müssen. Aber was sind jetzt
tatsächlich die unter "u.U." erwähnten Umstände? Wann macht die
Verwendung von study _wirklich_ Sinn? Hat schon jemand damit
praktische Erfahrung? Das wollte ich eigentlich wissen.

Schöne Grüße aus Wien,

Ferry

--
Ing. Ferry Bolhar
Municipality of Vienna, Department 14
A-1010 Vienna / AUSTRIA
E-mail: bol@adv.magwien.gv.at


LG, Ferry

--
Ing. Ferry Bolhar
Municipality of Vienna, Department 14
A-1010 Vienna / AUSTRIA
E-mail: bol@adv.magwien.gv.at