split na vety

Pavel Smerk xsmerk na informatics.muni.cz
Čtvrtek Říjen 17 10:41:16 MEST 2002


On Thu, Oct 17, 2002 at 10:07:00AM +0200, Honza Pazdziora wrote:
> On Thu, Oct 17, 2002 at 09:59:21AM +0200, Pavel Smerk wrote:
> > On Thu, Oct 17, 2002 at 09:51:26AM +0200, Jiri Polcar wrote:
> > > potreboval bych napsat RE pro `split' tak, aby jednotlive prvky
> > > predstavovaly vety. Vetu, pro jednoduchost, definuji tak, ze musi
> > > zacinat velkym pismenem a koncit [\.\?\!\:\;], po kterem muze nasledovat
> > > mezera.  
> > > 
> > > Moje
> > > 
> > >         @list_of_sentences = split /(?=[\.\?\!\:\;]\s*[A-Z])/, $_;
> > 
> > @list_of_sentences = split /(?<=$konec_vety\s*)(?=$zacatek_vety)/, $_;
> > 
> > tedy napr.
> > 
> > use locale;
> > @list_of_sentences = split /(?<=[\.\?\!\:\;]\s*)(?=[[:upper:]])/, $_;
> > 
> > jestli jsem spravne pochopil zadani. Mezery mezi vetami padnou na konec vet
> > jim predchazejicich. Sezere to i Á-Ž.
> 
> A mam Te -- ani sis to nevyzkousel:
> 
> [...]
> 
> Promenny lookbehind perl alespon ve verzi 5.6.1 neumi, cili jakmile
> v zadani bylo "po kterem muze nasledovat mezera", cili promennost, tak
> neni mozne ten lookbehind na tohle pouzit.
> 
> Tvym pritelem je prachobycejny m!!g se zavorkama.

(Temer) vzdycky zkousim, jen dnes jsem nemel cas ;-)

Ja jsem si to aji uvedomil, ovsem nejprve jsem mel jen pouzitelne

/(?<=[\.\?\!\:\;])\s*(?=[[:upper:]])/,

ale pak jsem si precetl, ze ty mezery tam museji nekde zustat, tak jsem je
frkl za tecku.
								:)	P.


Další informace o konferenci Perl