[Linuxtrent] Re: domanda re

  • From: Steevie <steevie@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 19 Jan 2011 12:10:46 +0100

Ciao,

2011/1/19 Marco Ciampa <ciampix@xxxxxxxxx>:
> Domanda che mi hanno posto sulle espressioni regolari
> per il perlisti (mi sembra esagerato chiedere a Larry W. :-)
>
> Come implementare un'espressione regolare che cerca una combinazione di n 
> cifre ma non ripetitiva?
Mi pare che tu stia cercando le possibili permutazioni di una stinga.
In tal caso è difficile rispondere, dato che una permutazione non è
un'operazione "regolare" (infatti, come noti, devi scartare diversi
risultati da una espressione regolare per ottenere quello che vuoi). A
naso mi viene da dire che non si può fare molto meglio di una cosa
tipo

1(23) | 2(13) | 3(12) che diventa
4(1(23) | 2(13) | 3(12)) | ... | 1(2(34) | (3(24) | 4(23)) per il caso
di 4 caratteri.

Però se hai bisogno di permutare stringhe più lunghe, dubito che le
espressioni regolari possano aiutarti, meglio usare altri strumenti.
Sempre a naso, crei una regex della stringa base, generi tutte le
combinazioni e verifichi quelle che ti servono con un sorting ed  un
match con la stringa base.

In soldoni, tra tutte le stringhe generate da [123]{3}, volendo
scartare i vari 122, 133, ... , 322, 311, fai un sorting (da cui
ottieni 122, 133, ..., 223, 113) e matchi con la stinga generatrice.

E... sì, mi pare abbastanza contorto, ma non mi è venuto in mente
niente di meglio...

HTH, Stefano
-- 
Stefano David
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: