erlug
[Top] [All Lists]

Re: [Erlug] regexp question

To: erlug@xxxxxxxxxxxxxx
Subject: Re: [Erlug] regexp question
From: zinie@xxxxxxxxxxx (Enrico Zini)
Date: Sun, 21 Dec 2003 13:00:27 +0100
On Sun, Dec 21, 2003 at 11:27:30AM +0100, Massimiliano Masserelli wrote:

> > esiste un modo per rappresentare, via regexp, una sequenza numerica che
> > non sia 0-9? Una cosa tipo "da 120 a 180", e senza specificare le
> > occorrenze?
> A meno di estensioni particolari del parser, no.

A voler esser pignoli, il modo esiste: (120|121|122|<eccetera>|180).
Questo per dire che le espressioni regolari sono abbastanza espressive
per riconoscere linguaggi definiti anche in termini di insiemi di
numeri.

Che sia comodo, perņ, questo no :)

In perl puoi ovviare costruendo la regexp in due passi:
 1) my $numeri = '(?:'.join('|', (120..180)).')';
 2) if (/(\w+)\s*=\s*($numeri)/) ...

Se la sequenza č lunga, ci mette un po' a compilarla, ma il match č
velocissimo.  Magari usala col /../o (compile only once) se possibile.

Ciao,

Enrico

<Prev in Thread] Current Thread [Next in Thread>