# Problem with reqular expression

**URL:** <https://www.ruby-forum.com/t/problem-with-reqular-expression/61349>\
**Category:** Ruby\
**Created:** [May 23, 2006, 12:19pm UTC](https://www.ruby-forum.com/t/problem-with-reqular-expression/61349 "2006-05-23T12:19:38Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ilyas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/f04885/32.png) [@ilyas](https://www.ruby-forum.com/u/ilyas)\
**Post date:** [May 23, 2006, 12:19pm UTC](https://www.ruby-forum.com/t/problem-with-reqular-expression/61349/1 "2006-05-23T12:19:38Z")

</div>

I have this string:

Color1 R=144 G=248 B=255

Need regular expression for get R,G,B  
How I can simplify it:

lines.gsub!(/Color1 R=(\d+) G=(\d+) B=(\d+)/) {  
puts $1  
puts $2  
puts $3  
}

---

<div class="post-metadata">

**Author:** ![ilyas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/f04885/32.png) [@ilyas](https://www.ruby-forum.com/u/ilyas)\
**Post date:** [May 23, 2006, 12:35pm UTC](https://www.ruby-forum.com/t/problem-with-reqular-expression/61349/2 "2006-05-23T12:35:15Z")

</div>

On Tue, May 23, 2006 at 07:19:50PM +0900, Ilyas wrote:

> }

Erm… “/Color1 R=(\d+) G=(\d+) B=(\d+)/” seems to me about  
as simple as you can get. I do wonder why you’re using an in-place  
substitution, though.

Joost.

---

<div class="post-metadata">

**Author:** ![ilyas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/f04885/32.png) [@ilyas](https://www.ruby-forum.com/u/ilyas)\
**Post date:** [May 23, 2006, 12:32pm UTC](https://www.ruby-forum.com/t/problem-with-reqular-expression/61349/3 "2006-05-23T12:32:03Z")

</div>

Hi –

On Tue, 23 May 2006, Ilyas wrote:

> ```
> puts $3
> 
> ```
> 
> }

lines.scan(/\d{3}/) would get you all three.

David

---

<div class="post-metadata">

**Author:** ![ilyas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/f04885/32.png) [@ilyas](https://www.ruby-forum.com/u/ilyas)\
**Post date:** [May 23, 2006, 12:41pm UTC](https://www.ruby-forum.com/t/problem-with-reqular-expression/61349/4 "2006-05-23T12:41:15Z")

</div>

Ilyas wrote:

> I have this string:
> 
> Color1 R=144 G=248 B=255
> 
> Need regular expression for get R,G,B  
> How I can simplify it:
> 
> lines.gsub!(/Color1 R=(\d+) G=(\d+) B=(\d+)/) {  
> puts $1  
> puts $2  
> puts $3  
> }

lines.gsub!(/R=(\d+) G=(\d+) B=(\d+)/) {puts $1; puts $2; puts $3}

=\>144  
=\>248  
=\>255

You didn’t use semi-colons within your block.

---

<div class="post-metadata">

**Author:** ![ilyas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/f04885/32.png) [@ilyas](https://www.ruby-forum.com/u/ilyas)\
**Post date:** [May 23, 2006, 2:20pm UTC](https://www.ruby-forum.com/t/problem-with-reqular-expression/61349/5 "2006-05-23T14:20:00Z")

</div>

Regg Mr wrote:

> Ilyas wrote:
> 
> > I have this string:
> > 
> > Color1 R=144 G=248 B=255
> > 
> > Need regular expression for get R,G,B  
> > How I can simplify it:
> > 
> > lines.gsub!(/Color1 R=(\d+) G=(\d+) B=(\d+)/) {  
> > puts $1  
> > puts $2  
> > puts $3  
> > }
> 
> lines.gsub!(/R=(\d+) G=(\d+) B=(\d+)/) {puts $1; puts $2; puts $3}
> 
> =\>144  
> =\>248  
> =\>255
> 
> You didn’t use semi-colons within your block.

It’s all what I wanted:

def get\_color(rgb\_string, color)  
@R, @G, @B = 0, 0, 0  
@R, @G, @B = Regexp.new(color + ‘\s+R=(\d+)\s+G=(\d+)\s+B=(\d+)’).  
match(rgb\_string).captures  
sprintf("#%x%x%x", @R, @G, @B)  
end

Thanks for Pena, Botp because your idea
