[Linuxtrent] Re: domanda re

  • From: Stefano Cirolini <stefano.cirolini@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Thu, 20 Jan 2011 17:47:26 +0100

2011/1/20 Marco Ciampa <ciampix@xxxxxxxxx>:
> On Wed, Jan 19, 2011 at 12:45:53PM +0100, Stefano Cirolini wrote:
>> In pratica si tratterebbe di trovare tutte le sequenze usando la tua
>> regexp, e poi escludere dal risultato le sequenze con cifre ripetute,
>> che puoi identificare con /([0-9])[0-9]*\1/
>
> non so se questa ultima è giusta, almeno non l'ho capita...
> ([0-9]) cifra (e fin qua...)
> [0-9]* altre da 0 a n cifre ... ?
> \1 la prima cifra???

\1 è una backreference: vorrebbe dire "il match compreso nella prima
coppia di parentesi"

quindi il pattern potrebbe essere descritto come "una cifra, e la
stessa cifra, separate da 0 o più altre cifre"

come facevano notare altri, [0-9] si può anche scrivere \d   (anche se
no so se OO permette questa abbreviazione). In questo caso, il pattern
che identifica una sequenza di cifre che contiene una ripetizione può
essere scritto come /(\d)\d*\1/

> ma questa sintassi in OO non c'è ... c'è però [^ ... ] ma non so che ci si 
> può fare...

non credo molto, dato che [^xy] vuol dire tutti i caratteri tranne xy,
e all'interno delle [] non si possono usare backreference

Se le sequenze fossero sempre di due cifre, potresti fare:

/0[1-9]|1[02-9]|2[013-9]|3[0-24-9]|4[0-35-9]|5[0-46-9]|6[0-57-9]|7[0-689]|8[0-79]|9[0-8]/

ma già con 3 cifre diventa un pattern di un migliaio di caratteri
(anche se si potrebbe scrivere uno scriptino per generarlo)
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: