# Extract value

**URL:** <https://www.ruby-forum.com/t/extract-value/190551>\
**Category:** Ruby\
**Created:** [June 22, 2010, 5:36pm UTC](https://www.ruby-forum.com/t/extract-value/190551 "2010-06-22T17:36:14Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![zoopzoop](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/59ef9b/32.png) [@zoopzoop](https://www.ruby-forum.com/u/zoopzoop)\
**Post date:** [June 22, 2010, 5:36pm UTC](https://www.ruby-forum.com/t/extract-value/190551/1 "2010-06-22T17:36:14Z")

</div>

Hello

I would like to parse or regexp the following string :

in order to keep only this : pub-9423056098431875 (and store it in a  
base)

I tried with regexp : ((google\_ad\_client = “pub-)(.\*?)(”;))

but it’s not working. and i don’t know which function to use (split ?  
splice ?) and how to proceed… I’m n00b in Ruby, sorry.

Thank you very much for your help

---

<div class="post-metadata">

**Author:** ![zoopzoop](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/59ef9b/32.png) [@zoopzoop](https://www.ruby-forum.com/u/zoopzoop)\
**Post date:** [June 22, 2010, 5:41pm UTC](https://www.ruby-forum.com/t/extract-value/190551/2 "2010-06-22T17:41:32Z")

</div>

On Tue, Jun 22, 2010 at 5:36 PM, Manuel Manu00 [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> in order to keep only this : pub-9423056098431875 (and store it in a  
> base)
> 
> I tried with regexp : ((google\_ad\_client = "pub-)(.\*?)(";))
> 
> but it’s not working. and i don’t know which function to use (split ?  
> splice ?) and how to proceed… I’m n00b in Ruby, sorry.

Try this:

irb(main):001:0\> doc =\<\<EOF  
irb(main):002:0"   
irb(main):009:0" EOF  
=\> "\<script type="text/javascript"\>\n google\_ad\_client =  
"pub-9423056098431875";\n / 300x250, created 6/10/09 _/\n  
google\_ad\_slot = "1755518182";\n google\_ad\_width = 300;\n  
google\_ad\_height = 250;\n \n"  
irb(main):011:0\> m = doc.match /google\_ad\_client = "(._?)"/  
=\> #\<MatchData “google\_ad\_client = "pub-9423056098431875"”  
1:“pub-9423056098431875”\>  
irb(main):012:0\> m.captures  
=\> [“pub-9423056098431875”]

Jesus.

---

<div class="post-metadata">

**Author:** ![zoopzoop](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/59ef9b/32.png) [@zoopzoop](https://www.ruby-forum.com/u/zoopzoop)\
**Post date:** [June 22, 2010, 6:29pm UTC](https://www.ruby-forum.com/t/extract-value/190551/3 "2010-06-22T18:29:33Z")

</div>

2010/6/22 Matthew B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > google\_ad\_height = 250;
> 
> matched = /google\_ad\_client\s\*=\s\*"([^"]+)"/.match(string)  
> google\_ad\_client = matched ? matched[1] : nil
> 
> seems flexible-ish, and might do what you want.

You can also use String#[] like this:

irb(main):001:0\> s=\<\<STR  
irb(main):002:0"   
irb(main):009:0" STR  
=\> "\<script type="text/javascript"\>\n google\_ad\_client =  
"pub-9423056098431875";\n / 300x250, created 6/10/09 \*/\n  
google\_ad\_slot = "1755518182";\n google\_ad\_width = 300;\n  
google\_ad\_height = 250;\n \n"

irb(main):010:0\> s[/google\_ad\_client\s\*=\s\*“([^”]\*)"/, 1]  
=\> “pub-9423056098431875”  
irb(main):011:0\>

If there is no match, you get nil.

Kind regards

robert

---

<div class="post-metadata">

**Author:** ![zoopzoop](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/59ef9b/32.png) [@zoopzoop](https://www.ruby-forum.com/u/zoopzoop)\
**Post date:** [June 22, 2010, 5:47pm UTC](https://www.ruby-forum.com/t/extract-value/190551/4 "2010-06-22T17:47:59Z")

</div>

On Wed, 2010-06-23 at 00:36 +0900, Manuel Manu00 wrote:

> 

matched = /google\_ad\_client\s\*=\s\*"([^"]+)"/.match(string)  
google\_ad\_client = matched ? matched[1] : nil

seems flexible-ish, and might do what you want.
