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

/[^\+0-9]/ o /[^+0-9]/

0 views
Skip to first unread message

Gnaurgl

unread,
Nov 17, 2009, 3:16:43 PM11/17/09
to
Espressioni regolari Perl.

Si usa

/[^\+0-9]/

oppure

/[^+0-9]/

?

In pratica il "+" ha bisogno di escape?

Se non fosse all'esterno di un gruppo "[]", sicuramente. Ma essendo
all'interno?

Roberto Montaruli

unread,
Nov 17, 2009, 3:33:52 PM11/17/09
to
Gnaurgl ha scritto:

Intanto che cosa intendi esprimere?
Tutto tranne il + e le cifre da zero a nove, mi viene da intendere...

In tal caso la seconda che hai scritto e' interpretabile, ma credo
proprio che anche la prima vada bene, giacche' il + con l'escape davanti
continua ad essere +.

Oreste

unread,
Nov 18, 2009, 12:14:08 AM11/18/09
to
On Nov 17, 10:16 pm, Gnaurgl <Gnau...@no.hill> wrote:
> /[^\+0-9]/
> /[^+0-9]/

Il + ha senso in questa formula? Se lo usi in senso aritmetico non ha
senso perchè si riferisce a zero, mentre se lo usi nella sua funzione
regexp non ha senso perché deve riferirsi ad uno o più elementi
precedenti.

Andrea D'Amore

unread,
Nov 18, 2009, 1:18:43 AM11/18/09
to
In article
<f2c70f79-00d7-400e...@g27g2000yqn.googlegroups.com>,
Oreste <ore...@parlatano.org> wrote:

> Se lo usi in senso aritmetico non ha senso perchè si riferisce a
> zero,

In che senso?

Gnaurgl

unread,
Nov 18, 2009, 3:11:12 AM11/18/09
to
Oreste ha scritto:

> Il + ha senso in questa formula? Se lo usi in senso aritmetico non ha

> senso perch� si riferisce a zero, mentre se lo usi nella sua funzione
> regexp non ha senso perch� deve riferirsi ad uno o pi� elementi
> precedenti.

Ok ho scelto un esempio reale ma meno netto. Diciamo che invece che "+"
devo usare "." che ha un preciso significato come espressione regolare e
io non voglio usarlo come significato speciale ma semplicemente come punto.

Se fosse all'esterno del gruppo fra parentesi quadre sono sicuro che
dovrei usare l'escape.

Ma dentro le parentesi quadre?

/[^\.0-9]/

oppure

/[^.0-9]/

?

Credo (non ho provato, ma ho provato altri simboli speciali) che venga
interpretato correttamente in entrambi i casi ma c'� una regola delle
espressioni regolari che dica:

"dentro i gruppi non si fa l'escape dei caratteri speciali perch�
vengono comunque interpretati come semplici caratteri normali"

?

Ho visto esempi in internet che usano caratteri speciali nei gruppi
senza usare l'escape quando invece vogliono usarli con il loro
significato di semplici caratteri.

Da qui il mio dubbio: ci va l'escape sempre ma qualcuno a volte se lo
dimentica e funziona lo stesso, oppure c'� una regola che stabilisce che
nei gruppi di caratteri i caratteri vengono interpretati sempre con il
loro significato non speciale e quindi l'escape non serve?

Grazie.

Oreste

unread,
Nov 18, 2009, 6:49:22 AM11/18/09
to
On Nov 18, 8:18 am, Andrea D'Amore
<and.damore...@LOSPAM.gmail.com.invalid> wrote:
> In article
> <f2c70f79-00d7-400e-a96a-6ce62cfe0...@g27g2000yqn.googlegroups.com>,

>
>  Oreste <ore...@parlatano.org> wrote:
> > Se lo usi in senso aritmetico non ha senso perchè si riferisce a
> > zero,
>
> In che senso?

Giusto, troppi "senso", colpa di una nottata insonne.

Oreste

unread,
Nov 18, 2009, 7:22:06 AM11/18/09
to
On Nov 18, 10:11 am, Gnaurgl <Gnau...@no.hill> wrote:
> io non voglio usarlo come significato speciale ma semplicemente come punto.
> /[^\.0-9]/
> /[^.0-9]/

Il punto può essere interpretato come separatore di decimali o altro,
difficile interpretarlo nel tuo esempio. L'uso delle parentesi quadre
identifica i limiti di una scala, per esempio da zero a nove, il punto
in che scala si colloca? A mio avviso è necessario definire con
chiarezza quale risultato ti prefiggi al fine di comporre
l'espressione regolare adatta.

Giovanni Zezza

unread,
Nov 18, 2009, 7:48:43 AM11/18/09
to
Oreste, nel messaggio
<8b50de8f-c8bb-4f8f...@n35g2000yqm.googlegroups.com>,
scriveva:

>On Nov 18, 10:11�am, Gnaurgl <Gnau...@no.hill> wrote:
>> io non voglio usarlo come significato speciale ma semplicemente come punto.
>> /[^\.0-9]/
>> /[^.0-9]/
>

>Il punto pu� essere interpretato come separatore di decimali o altro,

Il punto pu� essere interpretato solo come punto, dopo di che o � un
carattere speciale o ha un valore letterale. All'interno di un gruppo di
un'espressione regolare, ha valore letterale (tutti i caratteri comunque,
speciali o no, possono sempre essere "quotati" con \ , producendo il
carattere medesimo, a parte le sequenze particolari (tipo \n, \r, \d, \s
ecc.); il dubbio quindi si risolve sempre facilmente a questo modo).

>difficile interpretarlo nel tuo esempio. L'uso delle parentesi quadre
>identifica i limiti di una scala

Le parentesi quadre, in un'espressione regolare, identificano un gruppo,
che pu� essere o no costituito da un intervallo (/[zagfhs]/ �
un'espressione perfettamente corretta). "Scala" non ha alcun significato,
nell'ambito della terminolgia delle espressioni regolari di perl.

>A mio avviso � necessario definire con chiarezza quale risultato ti


>prefiggi al fine di comporre l'espressione regolare adatta.

E' stato, mi sembra, chiarissmo.

Ciao.

Oreste

unread,
Nov 18, 2009, 8:16:36 AM11/18/09
to
On Nov 18, 2:48 pm, Giovanni Zezza <zezza...@gmail.com> wrote:
> Oreste, nel messaggio
> <8b50de8f-c8bb-4f8f-8323-7f7da56e7...@n35g2000yqm.googlegroups.com>,

> scriveva:
>
> >On Nov 18, 10:11 am, Gnaurgl <Gnau...@no.hill> wrote:
> >> io non voglio usarlo come significato speciale ma semplicemente come punto.
> >> /[^\.0-9]/
> >> /[^.0-9]/
>
> >Il punto può essere interpretato come separatore di decimali o altro,
>
> Il punto può essere interpretato solo come punto, dopo di che o è un

> carattere speciale o ha un valore letterale. All'interno di un gruppo di
> un'espressione regolare, ha valore letterale (tutti i caratteri comunque,
> speciali o no, possono sempre essere "quotati" con \ , producendo il
> carattere medesimo, a parte le sequenze particolari (tipo \n, \r, \d, \s
> ecc.); il dubbio quindi si risolve sempre facilmente a questo modo).
>
> >difficile interpretarlo nel tuo esempio. L'uso delle parentesi quadre
> >identifica i limiti di una scala
>
> Le parentesi quadre, in un'espressione regolare, identificano un gruppo,
> che può essere o no costituito da un intervallo (/[zagfhs]/ è

> un'espressione perfettamente corretta). "Scala" non ha alcun significato,
> nell'ambito della terminolgia delle espressioni regolari di perl.
>
> >A mio avviso è necessario definire con chiarezza quale risultato ti

> >prefiggi al fine di comporre l'espressione regolare adatta.
>
> E' stato, mi sembra, chiarissmo.
>
> Ciao.

Facevi prima ad inviare una risposta al quesito Gnaurgi invece di
sottilizzare il mio post che riguardava esclusivamente
l'interpretazione umana del problema, che a mio parere è necessaria
precondizione. A questo punto non posso fare a meno di chiederti a
cosa sia servito il tuo ultimo post, forse solo a mettere in mostra
qualche banale conoscenza?

Andrea Laforgia

unread,
Nov 18, 2009, 8:24:21 AM11/18/09
to
Oreste ha scritto:

> Facevi prima ad inviare una risposta al quesito Gnaurgi invece di
> sottilizzare il mio post che riguardava esclusivamente

> l'interpretazione umana del problema, che a mio parere � necessaria
> precondizione.

Mi sembra che abbia risposto ad una tua domanda basata su una premessa
errata: le parentesi quadre non hanno il significato che tu hai dato loro
e quindi la tua domanda a Gnaurgi non aveva senso. Non capisco, poi, che
cosa tu voglia dire con "interpretazione umana". Le espressioni regolari
sono forme che devono essere digerite dalla macchina, non dagli umani. C'�
poco da interpretare.

> A questo punto non posso fare a meno di chiederti a
> cosa sia servito il tuo ultimo post, forse solo a mettere in mostra
> qualche banale conoscenza?

No, a correggere delle inesattezze che hai detto. Che in un gruppo tecnico
di discussione � importante tanto quanto dare risposte dirette.

--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it


Oreste

unread,
Nov 18, 2009, 9:11:38 AM11/18/09
to
> Mi sembra che abbia risposto ad una tua domanda basata su una premessa
> errata: le parentesi quadre non hanno il significato che tu hai dato loro
> e quindi la tua domanda a Gnaurgi non aveva senso. Non capisco, poi, che

Ha risposto ad una mia replica non alla domanda originale.

> cosa tu voglia dire con "interpretazione umana". Le espressioni regolari

> sono forme che devono essere digerite dalla macchina, non dagli umani. C'è
> poco da interpretare.

Per interpretazione umana intendo l'analisi del problema prima che
esso venga tradotto in codice.

> No, a correggere delle inesattezze che hai detto. Che in un gruppo tecnico

> di discussione è importante tanto quanto dare risposte dirette.

Non sono d'accordo, personalmente riesco a produrre tutti i risultati
che desidero con una regexp, ma non riesco a capire quale sia
esattamente l'obiettivo del quesito originale. La comprensione del
quesito serve sia a me, al fine di acquisire una casistica, sia a chi
pone il quesito nel caso riesca a dare una risposta corretta. La
polemica serve solo a perdere del tempo.

Andrea Laforgia

unread,
Nov 18, 2009, 9:24:40 AM11/18/09
to
Oreste ha scritto:

> Ha risposto ad una mia replica non alla domanda originale.

Il che � perfettamente lecito in un gruppo di discussione. Rileggi il mio
messaggio: ha risposto ad una tua replica in cui ponevi una domanda basata
su una premessa errata. L'ha voluta correggere e ha fatto bene. E, come ti
ho detto nel messaggio precedente, ha risposto indirettamente alla domanda
originale.

> Non sono d'accordo, personalmente riesco a produrre tutti i risultati
> che desidero con una regexp, ma non riesco a capire quale sia
> esattamente l'obiettivo del quesito originale. La comprensione del
> quesito serve sia a me, al fine di acquisire una casistica, sia a chi
> pone il quesito nel caso riesca a dare una risposta corretta. La
> polemica serve solo a perdere del tempo.

La polemica la stai facendo tu perch� sei risentito che qualcuno ti abbia
corretto. Giovanni ha risposto ad un tuo messaggio correggendo le
inesattezze che hai detto (hai parlato di "scale") e cercando di chiarire
la questione all'OP. Quando hai chiesto a Giovanni che senso avesse la sua
risposta, io te l'ho spiegato. Ed ora stai rispondendo a me per dire cosa?
Il quesito originale � pi� che chiaro: l'OP non sa se il punto venga
interpretato letteralmente o ha bisogno di essere specificato come
sequenza di escape. Giovanni, nel messaggio di seguito al tuo, dava una
risposta alla questione. Se tu sei uno che "riesce a produrre tutti i
risultati che desidera" con una regexp, avresti potuto dare una risposta
corretta.

Oreste

unread,
Nov 18, 2009, 9:55:32 AM11/18/09
to
On Nov 18, 4:24 pm, x...@xx.xx (Andrea Laforgia) wrote:
> risposta alla questione. Se tu sei uno che "riesce a produrre tutti i
> risultati che desidera" con una regexp, avresti potuto dare una risposta
> corretta.

Il fatto è che non riuscivo a comprendere la domanda. Non so se nella
mia controrisposta vi sia un elemento emotivo, forse hai ragione tu,
in questo caso chiedo venia. Incidente chiuso?

Giovanni Zezza

unread,
Nov 18, 2009, 10:19:31 AM11/18/09
to
Oreste, nel messaggio
<e3579c72-8862-4619...@o10g2000yqa.googlegroups.com>,
scriveva:

>Facevi prima ad inviare una risposta al quesito Gnaurgi invece di
>sottilizzare il mio post che riguardava esclusivamente

>l'interpretazione umana del problema, che a mio parere � necessaria
>precondizione.

Per contro tu, se neppure hai capito il problema, perch� hai risposto ad
una domanda a cui era gi� stata data una risposta soddisfacente?

Comunque, per chiarire ulteriormente, e in forma pi� precisa e autorevole
(da perlretut):

Using character classes

Although one can already do quite a lot with the literal string
regexps above, we've only scratched the surface of regular
expression technology. In this and subsequent sections we will
introduce regexp concepts (and associated metacharacter notations)
that will allow a regexp to not just represent a single character
sequence, but a whole class of them.

One such concept is that of a character class. A character class
allows a set of possible characters, rather than just a single
character, to match at a particular point in a regexp. Character
classes are denoted by brackets [...], with the set of characters to
be possibly matched inside. Here are some examples:

....

We saw in the section above that there were ordinary characters,
which represented themselves, and special characters, which needed a
backslash \ to represent themselves. The same is true in a character
class, but the sets of ordinary and special characters inside a
character class are different than those outside a character class.
The special characters for a character class are -]\^$ (and the
pattern delimiter, whatever it is). ] is special because it denotes
the end of a character class. $ is special because it denotes a
scalar variable. \ is special because it is used in escape
sequences, just like above.

...

The special character '-' acts as a range operator within character
classes, so that a contiguous set of characters can be written as a
range.
....

Nel medesimo paragrafo spiega poi come trattare i caratteri speciali propri
delle classi caratteri, quando si intende usarli come caratteri letterali.

>A questo punto non posso fare a meno di chiederti a cosa sia servito il tuo
>ultimo post, forse solo a mettere in mostra qualche banale conoscenza?

A riempire piacevolmente la pausa pranzo.

Ciao.

Sery

unread,
Nov 18, 2009, 11:21:20 AM11/18/09
to
Oreste ha scritto:

> Il fatto � che non riuscivo a comprendere la domanda. Non so se nella

Bando alle ciancie.

Non hai capito niente di quell'espressione regolare, n� la prima col "+"
n� la seconda con il punto.

I dubbi che hai posto sono dubbi presenti solo nella tua testa per
mancanza di conoscenza delle espressioni regolari.

La domanda era perfettamente chiara fin dall'inizio e alla fine ha
ricevuto risposta, non grazie a te e nonostante la tua involontaria
azione di disturbo.

Niente di personale.

Io ho imparato una cosa nuova sulle espressioni regolari.

Oreste

unread,
Nov 18, 2009, 2:28:31 PM11/18/09
to
On Nov 18, 5:19 pm, Giovanni Zezza <zezza...@gmail.com> wrote:
> Per contro tu, se neppure hai capito il problema, perché hai risposto ad
> una domanda a cui era già stata data una risposta soddisfacente?

Senza voler offendere, ma se un pó pesante...
Non ho risposto alla domanda ma ho semplicemente chiesto chiarimenti,
oltretutto non li ho chiesti a te.

Oreste

unread,
Nov 18, 2009, 2:30:16 PM11/18/09
to
On Nov 18, 6:21 pm, Sery <n...@lo.scrivo> wrote:
> Bando alle ciancie.
>
> Non hai capito niente di quell'espressione regolare, né la prima col "+"
> né la seconda con il punto.

> I dubbi che hai posto sono dubbi presenti solo nella tua testa per
> mancanza di conoscenza delle espressioni regolari.

Se ti fa piacere pensarlo

> Io ho imparato una cosa nuova sulle espressioni regolari.

Buon per te.

0 new messages