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

regex: un boundary personalizzato

9 views
Skip to first unread message

Pleg

unread,
Feb 6, 2008, 4:49:22 AM2/6/08
to
Salve a tutti,
se dovessi identificare delle parole intere (di caratteri \w) userei
\b per trovare i boundary di parola (una cosa tipo \b\w+\b ). Ma le
mie "parole" sono composte non solo di caratteri \w, ma anche da
parentesi quadre (quindi [0-9a-zA-Z_\[\]] ): come faccio ad avere un
comando equivalente a \b in questo caso, in modo da poter identificare
in una stringa questo tipo di "parole"?

Grazie,


Pleg

Andrea Maestrutti

unread,
Feb 6, 2008, 5:39:47 AM2/6/08
to
Pleg wrote:

> parentesi quadre (quindi [0-9a-zA-Z_\[\]] ): come faccio ad avere un
> comando equivalente a \b in questo caso, in modo da poter identificare

http://groups.google.it/group/it.comp.lang.perl/browse_thread/thread/cf6917a5b0893c56/63b3663dbd5be24e?hl=it&lnk=gst&q=%24slash_w#

ecco la risposta del mitico Max M. ad una mia analoga domanda di quasi 7
anni fa

Pleg

unread,
Feb 6, 2008, 6:01:54 AM2/6/08
to
On Feb 6, 11:39 am, Andrea Maestrutti <maestru...@friuli.com> wrote:
> Pleg wrote:
> > parentesi quadre (quindi [0-9a-zA-Z_\[\]] ): come faccio ad avere un
> > comando equivalente a \b in questo caso, in modo da poter identificare
>
> http://groups.google.it/group/it.comp.lang.perl/browse_thread/thread/...

>
> ecco la risposta del mitico Max M. ad una mia analoga domanda di quasi 7
> anni fa


Ommiodiochecasinoinenarrabile!
Grazie mille, dovrebbe fare proprio al caso mio (se riesco a
decifrarlo :-)
... 7 anni? Ecco perche' anche con google group search non ero
riuscito a trovarlo! :-)


Pleg

Giovanni Zezza

unread,
Feb 6, 2008, 6:10:08 AM2/6/08
to
Andrea Maestrutti, nel messaggio <foc2q1$gia$1...@nnrp.ngi.it>, scriveva:

E se uno volesse definirsi un locale personalizzato?

Ciao.

Pleg

unread,
Feb 6, 2008, 10:17:20 AM2/6/08
to
On Feb 6, 11:39 am, Andrea Maestrutti <maestru...@friuli.com> wrote:
> Pleg wrote:
> > parentesi quadre (quindi [0-9a-zA-Z_\[\]] ): come faccio ad avere un
> > comando equivalente a \b in questo caso, in modo da poter identificare
>
> http://groups.google.it/group/it.comp.lang.perl/browse_thread/thread/...

>
> ecco la risposta del mitico Max M. ad una mia analoga domanda di quasi 7
> anni fa


Ok, ho smanettato e ho circa capito, ma non funziona se le parole da
identificare sono a inizio o fine stringa (mi par ragionevole, prima
della prima lettera della prima parola non c'e' nessun carattere "non
parola", e quindi fallisce il test...), qualche idea su come far
riconoscere anche la prima e l'ultima parola?

Grazie,


Pleg

Andrea Maestrutti

unread,
Feb 6, 2008, 10:50:14 AM2/6/08
to
Pleg wrote:

> qualche idea su come far
> riconoscere anche la prima e l'ultima parola?

forse, cose tipo

/$slash_b($slash_w+)$slash_b|^($slash_w+)$slash_b|$slash_b($slash_w+)$/

Max M.

unread,
Feb 6, 2008, 8:10:01 PM2/6/08
to
Giovanni Zezza wrote:
>>ecco la risposta del mitico Max M. ad una mia analoga domanda di quasi 7
>>anni fa
>
> E se uno volesse definirsi un locale personalizzato?

Stavo pensando alla stessa cosa. Basterebbe duplicare un locale esistente e
modificare la definizione di CTYPE aggiungendo le parentesi quadre alla
classe 'alpha'.

Max

PS: Andrea, grazie del "mitico". Ci ho fatto un post autocelebrativo nel mio
blog: http://maximalist.tumblr.com/post/25697887 :)

Pleg

unread,
Feb 7, 2008, 1:58:13 AM2/7/08
to


Non so se sia giusto, ma ho provato ad aggiungere direttamente nella
mia re dichiarata con qr// la possibilita' di essere a inizio o fine
stringa e mi sembra funzioni:

my $constw = qr/[0-9a-zA-Z_\[\]]/;
my $constW = qr/[^0-9a-zA-Z_\[\]]/;

e poi
my $constb = qr/(?:(?<=^)(?=$constw)|(?<=$constW)(?=$constw)|(?<=
$constw)(?=$constW)|(?<=$constw)(?=$))/;

al posto di
my $constb = qr/(?:(?<=$constW)(?=$constw)|(?<=$constw)(?=$constW))/;

Pleg

Giovanni Zezza

unread,
Feb 7, 2008, 4:11:02 AM2/7/08
to
Max M., nel messaggio <QJedncEKopqVxzfa...@kpnqwest.it>,
scriveva:

>Stavo pensando alla stessa cosa. Basterebbe duplicare un locale esistente e
>modificare la definizione di CTYPE aggiungendo le parentesi quadre alla
>classe 'alpha'.

Cioč, in dettaglio? o dove si trova la documentazione al riguardo (POSIX?)?

Ciao.

Max M.

unread,
Feb 7, 2008, 12:49:11 PM2/7/08
to
Giovanni Zezza wrote:
>>Stavo pensando alla stessa cosa. Basterebbe duplicare un locale esistente
>>e modificare la definizione di CTYPE aggiungendo le parentesi quadre alla
>>classe 'alpha'.
>
> Cioč, in dettaglio? o dove si trova la documentazione al riguardo
> (POSIX?)?

Sě, POSIX. Non ne so molto, perň. La documentazione la puoi trovare nelle
manpages: locale(7), setlocale(3), localedef(1).

Max

0 new messages