Regexp for $(text)

I have string
a = "ala $(ela) ola $(tola) lola $(p_ola) ".

And I need some magic function that works this way:

puts a.params
[“ela”, “tola”, “p_ola”]

How to do this?

Szymon

Szymon Drejewicz wrote:

I have string
a = "ala $(ela) ola $(tola) lola $(p_ola) ".

And I need some magic function that works this way:

puts a.params
[“ela”, “tola”, “p_ola”]

How to do this?

just escape the ( and the $.

irb(main):001:0> a = "ala $(ela) ola $(tola) lola $(p_ola) "
=> "ala $(ela) ola $(tola) lola $(p_ola) "
irb(main):002:0> a.scan /$((\w+))/
=> [[“ela”], [“tola”], [“p_ola”]]
irb(main):003:0>

emmanuel

Emmanuel Touzery wrote:

Szymon Drejewicz wrote:

I have string
a = "ala $(ela) ola $(tola) lola $(p_ola) ".

And I need some magic function that works this way:

>> puts a.params
["ela", "tola", "p_ola"]

How to do this?

just escape the ( and the $.

irb(main):001:0> a = "ala $(ela) ola $(tola) lola $(p_ola) "
=> "ala $(ela) ola $(tola) lola $(p_ola) "
irb(main):002:0> a.scan /\$\((\w+)\)/
=> [["ela"], ["tola"], ["p_ola"]]
irb(main):003:0>

emmanuel

btw if you just want a one-depth array:

irb(main):004:0> a.scan(/\$\((\w+)\)/).flatten
=> ["ela", "tola", "p_ola"]

emmanuel

Thank you :slight_smile:

“Emmanuel Touzery” emmanuel.touzery@wanadoo.fr schrieb im Newsbeitrag
news:3FD99DCC.2020001@wanadoo.fr

Emmanuel Touzery wrote:

Szymon Drejewicz wrote:

I have string
a = "ala $(ela) ola $(tola) lola $(p_ola) ".

And I need some magic function that works this way:

puts a.params
[“ela”, “tola”, “p_ola”]

How to do this?

just escape the ( and the $.

irb(main):001:0> a = "ala $(ela) ola $(tola) lola $(p_ola) "
=> "ala $(ela) ola $(tola) lola $(p_ola) "
irb(main):002:0> a.scan /$((\w+))/
=> [[“ela”], [“tola”], [“p_ola”]]
irb(main):003:0>

emmanuel

btw if you just want a one-depth array:

irb(main):004:0> a.scan(/$((\w+))/).flatten
=> [“ela”, “tola”, “p_ola”]

Also:

irb(main):010:0> a.scan(/$(([^)]*))/).map{|m| m[0]}
=> [“ela”, “tola”, “p_ola”]
irb(main):011:0>

robert