Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

aiuto con espressioni regolari

0 views
Skip to first unread message

Luca Ferrari

unread,
Jun 30, 2008, 3:19:01 AM6/30/08
to
Salve a tutti,
sono un po' digiuno di espressioni regolari. Se ho una variabile con una
serie di frasi (ossia parti che iniziano con una maiuscola e finiscono con
un .) come faccio a splittare le frasi?

@frasi = split( /[A-Z].*\./ , $text);

non funziona! Il .* credo si mangi tutto quello che c'è in $text, come devo
scrivere l'espressione?

Grazie,
Luca

Emanuele Zeppieri

unread,
Jun 30, 2008, 3:56:46 AM6/30/08
to
Luca Ferrari wrote:

C'eri quasi:

my @frasi = $testo =~ /([A-Z].*?\.)/gs;

quando vuoi che il match sia non greedy (o /minimale/ che dir si
voglia), devi usare il quantificatore "?".

A latere: non usare split, semplicemente cattura tutti i match (mediante
il modificatore "g").
Infine il modificatore "s" permette a "." di matchare anche il newline
(per gestire il caso in cui una frase sia spezzata su più righe
consecutive).

Ciao,
Emanuele

antani

unread,
Jun 30, 2008, 3:53:04 AM6/30/08
to

Dipende anche dalla presenza o meno di \n all'interno della frase, e se vuoi
o no conservare il punto finale. Comunque, prova una delle forme seguenti
(stampa l'array @frasi dopo ognuna per vedere se ti va bene):

$text="Frase numero 1.Frase 2.Questa e' la frase 3.E la frase 4.";

@frasi=split /\./,$text;
@frasi=($text=~m/([^.]+)/g); # come il precedente
@frasi=($text=~m/([^.]+\.)/g);

0 new messages