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