# %r{\\.(gif|jpg|png)$}i

**URL:** <https://www.ruby-forum.com/t/r-gif-jpg-png-i/215433>\
**Category:** IT\
**Created:** [January 4, 2012, 12:01pm UTC](https://www.ruby-forum.com/t/r-gif-jpg-png-i/215433 "2012-01-04T12:01:39Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![dubstep](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/cdc98d/32.png) [@dubstep](https://www.ruby-forum.com/u/dubstep)\
**Post date:** [January 4, 2012, 12:01pm UTC](https://www.ruby-forum.com/t/r-gif-jpg-png-i/215433/1 "2012-01-04T12:01:39Z")

</div>

So a grandi linee il significato di questa espressione, ma non mi  
completamente chiara (ad esempio “%r{}”)  
Qualcuno di voi saprebbe spiegarmela passo passo?

Non c’ un modo pi chiaro per scriverla?

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [January 4, 2012, 12:15pm UTC](https://www.ruby-forum.com/t/r-gif-jpg-png-i/215433/2 "2012-01-04T12:15:17Z")

</div>

E’ difficile riscriverla in modo pi semplice, perch veramente basilare,  
cmq:

%r{regex} == regular expression, l’equivalente di /regex/

Adesso vediamo cosa dice la regular expression che ti interessa:

.(gif|jpg|png)$

. == un punto, parlo proprio del carattere 🙂 - necessario l’escape  
del punto . perch il punto non preceduto da backslash, nel mondo  
delle regular expression significa qualsiasi carattere.

(gif|jpg|png) == uno qualsiasi tra gif, jpg o png

$ == fine della stringa.

Infine la i dopo la parentesi graffa significa “insensitive”, ovvero  
la regular expression fa il match sia su caratteri maiuscoli che  
minuscoli.

2012/1/4 Luca B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [January 4, 2012, 12:20pm UTC](https://www.ruby-forum.com/t/r-gif-jpg-png-i/215433/3 "2012-01-04T12:20:50Z")

</div>

Giovanni mi ha battuto sul tempo!

Puoi testare le regular expression su [rubular.com](http://rubular.com) !

Il giorno 04 gennaio 2012 12:15, Giovanni I. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> del punto . perch il punto non preceduto da backslash, nel mondo  
> 2012/1/4 Luca B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> > [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)
> 
> * * *
> 
> Ml mailing list  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Matteo C.  
Ufficio Reti e Sistemi  
Universit degli Studi di Ferrara  
Tel. 0532 97 4153

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [January 4, 2012, 12:38pm UTC](https://www.ruby-forum.com/t/r-gif-jpg-png-i/215433/4 "2012-01-04T12:38:11Z")

</div>

> %r{regex} == regular expression, l’equivalente di /regex/

Infatti mi ricordavo di aver studiato quella dicitura, perch si usa  
questa  
qui? E’ l’equivalente in ruby? O c’ qualche altro motivo?

Grazie mille anche a te Matteo che hai condiviso il prezioso link!

Il giorno 04 gennaio 2012 12:20, Matteo C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [January 12, 2012, 12:14pm UTC](https://www.ruby-forum.com/t/r-gif-jpg-png-i/215433/5 "2012-01-12T12:14:18Z")

</div>

Anche secondo me è più chiara la sintassi /regexp/  
Comunque per provare una regexp al volo:

irb(main):044:0\> /.(gif|jpg|png)$/i === “pippo.jpg”  
=\> true  
irb(main):045:0\> /.(gif|jpg|png)$/i === “pippo.xml”  
=\> false

oppure il metodo match della classe string:

irb(main):047:0\> “pippo.xml”.match(/.(gif|jpg|png)$/i).to\_s  
=\> “”  
irb(main):048:0\> “pippo.jpg”.match(/.(gif|jpg|png)$/i).to\_s  
=\> “.jpg”

---

<div class="post-metadata">

**Author:** ![luca](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/51bf81/32.png) [@luca](https://www.ruby-forum.com/u/luca)\
**Post date:** [January 4, 2012, 12:48pm UTC](https://www.ruby-forum.com/t/r-gif-jpg-png-i/215433/6 "2012-01-04T12:48:46Z")

</div>

> > %r{regex} == regular expression, l’equivalente di /regex/
> 
> Infatti mi ricordavo di aver studiato quella dicitura, perch si usa questa  
> qui? E’ l’equivalente in ruby? O c’ qualche altro motivo?

Puo` essere utile se hai una regexp con delle /

//// per esempio.

%r{//} e` un po' piu` chiaro.

Altrimenti non lo userei, perche` e` piu` chiaro //

–  
David N. Welton

> **[David N. Welton](https://www.welton.it/davidw/)**

[http://www.dedasys.com/](http://www.dedasys.com/)
