# In una stringa voglio estrare il testo tra 2 separatori

**URL:** <https://www.ruby-forum.com/t/in-una-stringa-voglio-estrare-il-testo-tra-2-separatori/199928>\
**Category:** IT\
**Created:** [December 1, 2010, 5:06pm UTC](https://www.ruby-forum.com/t/in-una-stringa-voglio-estrare-il-testo-tra-2-separatori/199928 "2010-12-01T17:06:14Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dobai-Pataky\_BSSSSl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/77aa72/32.png) [@Dobai-Pataky\_BSSSSl](https://www.ruby-forum.com/u/Dobai-Pataky_BSSSSl)\
**Post date:** [December 1, 2010, 5:06pm UTC](https://www.ruby-forum.com/t/in-una-stringa-voglio-estrare-il-testo-tra-2-separatori/199928/1 "2010-12-01T17:06:14Z")

</div>

Ciao.  
Io ho la seguente stringa presa da un file:

Articolo#1=Ciupa

Come faccio ad estrare il numero tra # e =, tenendo presente che può  
essere un numero con più cifre.  
Penso che l’unica soluzione sia utilizzare le espressioni regolari. Mi  
confermate questa cosa?  
Ciao.  
KioSirio

---

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [December 1, 2010, 5:15pm UTC](https://www.ruby-forum.com/t/in-una-stringa-voglio-estrare-il-testo-tra-2-separatori/199928/2 "2010-12-01T17:15:16Z")

</div>

si la regex la cosa migliore 😉

prova a giocherellare su questo sito: [http://rubular.com](http://rubular.com)

un pannello web per provare le tue regex

ciao,  
A.

Il 01/12/2010 17:06, Ivan M. ha scritto:

> KioSirio

–  
[http://twitter.com/apeacox](http://twitter.com/apeacox)

---

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [December 1, 2010, 5:19pm UTC](https://www.ruby-forum.com/t/in-una-stringa-voglio-estrare-il-testo-tra-2-separatori/199928/3 "2010-12-01T17:19:41Z")

</div>

2010/12/1 Ivan M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Ciao.  
> Io ho la seguente stringa presa da un file:
> 
> Articolo#1=Ciupa
> 
> Come faccio ad estrare il numero tra # e =, tenendo presente che pu  
> essere un numero con pi cifre.  
> Penso che l’unica soluzione sia utilizzare le espressioni regolari. Mi  
> confermate questa cosa?

Puoi anche fare

“Articolo#1=Ciupa”[9..-1].to\_i

che probabilmente e’ piu’ veloce della regexp, ma e’ una zozzeria che  
mi vergogno di avere pensato!

Se sei piuttosto sicuro che quello che c’e’ prima del # sia sempre e  
solo lettere, la regexp e’ molto semplice: (\d+), altrimenti solo  
marginalmente piu’ complessa #(\d+).

Ciao

---

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [December 2, 2010, 12:34pm UTC](https://www.ruby-forum.com/t/in-una-stringa-voglio-estrare-il-testo-tra-2-separatori/199928/4 "2010-12-02T12:34:01Z")

</div>

2010/12/1 Ivan M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > > confermate questa cosa?  
> > > marginalmente piu’ complessa #(\d+).
> > 
> > Ciao
> 
> Prima del # e dopo l’= ci pu essere qualsiasi cosa, io sono per sicuro  
> che tra le 2 cose ci sono solo numeri (composti da 1 o pi cifre).

ad essere molto precisi potresti matchare

> > “Qualcosa#1=any”.match(/#(\d+)=/)[1]  
> > =\> “1”

… ma il problema delle regexp e’ che non si finisce mai di essere  
precisi! ad esempio questa regexp verrebbe ingannata da

> > “Qua#2=lcosa#1=any”.match(/#(\d+)=/)[1]  
> > =\> “2”

dandoti un valore sbagliato invece di un sonoro errore…

che intendi per “qualsiasi cosa”?

---

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [December 1, 2010, 8:25pm UTC](https://www.ruby-forum.com/t/in-una-stringa-voglio-estrare-il-testo-tra-2-separatori/199928/5 "2010-12-01T20:25:59Z")

</div>

Luca De Marinis wrote in post #965429:

> 2010/12/1 Ivan M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > Ciao.  
> > Io ho la seguente stringa presa da un file:
> > 
> > Articolo#1=Ciupa
> > 
> > Come faccio ad estrare il numero tra # e =, tenendo presente che pu  
> > essere un numero con pi cifre.  
> > Penso che l’unica soluzione sia utilizzare le espressioni regolari. Mi  
> > confermate questa cosa?
> 
> Puoi anche fare
> 
> “Articolo#1=Ciupa”[9..-1].to\_i
> 
> che probabilmente e’ piu’ veloce della regexp, ma e’ una zozzeria che  
> mi vergogno di avere pensato!
> 
> Se sei piuttosto sicuro che quello che c’e’ prima del # sia sempre e  
> solo lettere, la regexp e’ molto semplice: (\d+), altrimenti solo  
> marginalmente piu’ complessa #(\d+).
> 
> Ciao

Prima del # e dopo l’= ci può essere qualsiasi cosa, io sono però sicuro  
che tra le 2 cose ci sono solo numeri (composti da 1 o più cifre).  
Ciao.  
KioSirio
