Problem se nenazranym kvantifikatorem v Perlu
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Pondělí Únor 5 12:29:26 CET 2001
On Mon, 5 Feb 2001, Borek Lupoměský wrote:
> PK> Tohle by snad mohlo byt ekvivaletni /\.(.*)$/, cili najdete
> _prvni_ tecku
>
> To neni ekvivalentni, aspon podle dokumentace neni.
Vskutku, i kdyz v danem kontextu neni zadny rozdil mezi * a *? resp.
+ a +?. Viz nize.
> Jasne, tohle funguje a existuji i jine zpusoby. Mne spis zajimalo,
> proc nefunguje +? nebo *? a nedela, co delat ma tj. sezrat nejmensi
> mozne mnozstvi znaku pri platnosti regularniho vyrazu.
Protoze "nejmensi mnozstvi" znamena "nejmensi mnozstvi pri zadanem
pocatecnim znaku". Ten je v nasem pripade urcen jednoznacne: je to prvni
nalezena tecka. A konec je take urcen jednoznace, protoze to musi byt
konec stringu ($). Ostatne je to i v dokumentaci (perlre(1)):
By default, a quantified subpattern is "greedy", that is,
it will match as many times as possible (given a
---> particular starting location) while still allowing the
rest of the pattern to match. If you want it to match the
minimum number of times possible, follow the quantifier
with a "?". Note that the meanings don't change, just the
"greediness":
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux