Jak namatchovat \n na konci stringu?
Pavel Smerk
xsmerk na fi.muni.cz
Středa Listopad 5 09:57:13 CET 2008
On Wed, Nov 05, 2008 at 09:48:50AM +0100, Jan Kasprzak wrote:
> Pavel Smerk wrote:
> : On Wed, Nov 05, 2008 at 09:22:45AM +0100, Jan Kasprzak wrote:
> : > Pavel Smerk wrote:
> : > : > Co znamena to "or"? Podle ceho se perl rozhodne, kterou z tech dvou variant
> : > : > zvoli? Jak muzu rict, ze chci "at end of string", a nikoli "before newline
> : > : > at the end"?
> : >
> : > A neni ten kdo zvoli primo programator pomoci /m ?
> :
> : Tomu asi nerozumim, perl -e 'print "ab\n" =~ /^.*?(.{0,1})$/' vypise vzdy
> : "b" a nikdy "\n", nezavisle na pouzite "podmnozine" modifikatoru {/s, /m}.
> :
> : IOW, to /m v tomhle pripade nic neovlivni. Vzdy je to "before newline at the
> : end". Naproti tomu pri =~ /^.*?(.{0,})$/ se vypise budto "ab", nebo "ab\n"
> : podle toho, zda pouziju /s, /m opet nema zadny vliv, ani s /s, ani bez nej.
>
> /m ovlivnuje jen \z, ne $, rekl bych.
To myslim, ze prave naopak, man perlre:
m Treat string as multiple lines. That is, change "^" and "$" from
matching the start or end of the string to matching the start or end of any
line anywhere within the string.
[...]
ALE! \z je to, co jsem hledal, diky, nevim, proc jsem docetl jen k \Z. :-)
"Teoreticka" otazka, proc se .{n,} chova v tomto kontextu jinak nez .{n,m},
aniz by to bylo zmineno v dokumentaci (a jestli je to bug, nebo se toto
chovani ridi nejakou skrytou logikou), ovsem stale zustava.
P.
Další informace o konferenci Perl