Salve,
è possibile convertire una stringa in espressione regolare?
se si come?
grazie
Ciao
Il 16/07/07, Matteo G. [email protected] ha scritto:
Salve,
è possibile convertire una stringa in espressione regolare?
se si come?
string = “hello” # => “hello”
regexp = Regexp.new(string) # => /hello/
Ciao
Matteo
On 7/16/07, Matteo G. [email protected] wrote:
Salve,
è possibile convertire una stringa in espressione regolare?
se si come?
Ciao Matteo,
puoi usare Regexp.new(“mystring”) oppure %r{mystring}.
Esempio:
irb(main):001:0> my_pattern = Regexp.new(“foo”)
=> /foo/
irb(main):002:0> “bar foo” =~ my_pattern
=> 4
Ciao,
Antonio
On 7/16/07, gabriele renzi [email protected] wrote:
%r{m}
=> /m/Mentre funziona se usi l’interpolazione
%r{#{m}}
=> /\d+/
/#{m}/
Quello che ho scritto è corretto ma un chiarimento è d’obbligo.
Quando indico %r{mystring}, mystring non è una variable ma è la stringa
stessa (equivalente a Regexp.new(“mystring”)). Per questo quando scrivi
%r{m} ottieni /m/ anche se m esiste come variabile. Puoi usare
direttamente
%r{\d+} e funzionerebbe, oppure se vuoi assegnare il tuo pattern ad una
variabile, hai bisogno di convertirla a stringa prima di usarla in %r{}.
Per
questo nel tuo esempio %r{#{m}} funziona perché è equivalente a %r{\d+}.
Visto che ci siamo, citiamo anche il fatto che %r può essere usato per
definire regexp con delimitatori che non siano due ‘/’. Ad esempio
irb(main):001:0> %r!http://myurl.com/! # Equivalente a Regexp.new("
http://myurl.com/")
=> => /http://myurl.com//
Ciao,
Antonio
— Antonio C. [email protected] wrote:
puoi usare Regexp.new(“mystring”) oppure
%r{mystring}.
credo che antonio si sia asbagliato qui:
la seconda così non funziona:
m=‘\d+’
=> “\d+”
%r{m}
=> /m/
Mentre funziona se usi l’interpolazione
%r{#{m}}
=> /\d+/
/#{m}/
Anche con il literal classico
=> /\d+/
/#{m}/
Tieni a mente anche Regexp.quote, che fa in modo di
interpretare i metacaratteri letteralmente
r = Regexp.new(Regexp.quote(‘.’))
=> /./
r.match ‘a’
=> nil
r.match ‘.’
=> #MatchData:0xb786e0e0
Non è detto che ti serva, ma è giusto che tu sappia
che esiste
–
Goto 10: http://www.goto10.it
blog it: http://riffraff.blogsome.com
blog en: http://www.riffraff.info
___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try
it
now.