[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Newbie regexp question

Skt

7/5/2007 10:33:00 PM

Newbs here, decided to take today to learn regular expression.

What i want to do is take a sentence and just pull two things from it. Example:

"My address is 68 Ohio"

I want to pull address and 68 from the sentence but that pesky is is getting in my way(or im too newb)

"My address is 68 ohio" =~ /\w{7}\d{2}/ is what i tried but continuous nils. Any help?

4 Answers

Gregory Brown

7/5/2007 10:45:00 PM

0

On 7/5/07, Skt <scottjourand@gmail.com> wrote:
> Newbs here, decided to take today to learn regular expression.
>
> What i want to do is take a sentence and just pull two things from it. Example:
>
> "My address is 68 Ohio"
>
> I want to pull address and 68 from the sentence but that pesky is is getting in my way(or im too newb)
>
> "My address is 68 ohio" =~ /\w{7}\d{2}/ is what i tried but continuous nils. Any help?

>> m = "My address is 68 Ohio".match(/(\w{7}).*(\d{2})/)
=> #<MatchData:0x33c17c>
>> m[1]
=> "address"
>> m[2]
=> "68"

But what that actually says is 'Match a word 7 characters long,
followed by zero or more matches of any character (except newline),
then match two digits.

If you really wanted to pull address and 68, you'd want:

>> m = "My address is 68 Ohio".match(/(address).*(68)/)
=> #<MatchData:0x314438>
>> m[1]
=> "address"
>> m[2]
=> "68"

Hope that helps.

Harold Hausman

7/5/2007 10:48:00 PM

0

On 7/5/07, Skt <scottjourand@gmail.com> wrote:
> Newbs here, decided to take today to learn regular expression.
>

You're brave to try and learn regular expressions in a day. I
recommend you accept now that it will be a life long journey. (:

> What i want to do is take a sentence and just pull two things from it. Example:
>
> "My address is 68 Ohio"
>
> I want to pull address and 68 from the sentence but that pesky is is getting in my way(or im too newb)
>
> "My address is 68 ohio" =~ /\w{7}\d{2}/ is what i tried but continuous nils. Any help?
>
>

What do you think of this: ?
irb(main):005:0> s = "My address is 68 ohio"
=> "My address is 68 ohio"
irb(main):006:0> r = /(address)[^\d]+(\d+)/
=> /(address)[^\d]+(\d+)/
irb(main):007:0> s.scan( r ) {|match| p match}
["address", "68"]
=> "My address is 68 ohio"

The regular expression essentially says: "Find the word address,
followed by one or more things thats not a number, then also find one
or more numbers"

hth,
-Harold

dblack

7/5/2007 11:00:00 PM

0

Harry Kakueki

7/6/2007 4:24:00 AM

0

>
> "My address is 68 Ohio"
>
> I want to pull address and 68 from the sentence but that pesky is is getting in my way(or im too newb)
>
> "My address is 68 ohio" =~ /\w{7}\d{2}/ is what i tried but continuous nils. Any help?
>
>

Here is something like what you tried that will skip the 'is'.

s = "My address is 68 ohio"
p s.scan(/\w{7}|\d{2}/)

OR

p s.scan(/address|\d+/)

Harry

--
A Look into Japanese Ruby List in English
http://www.ka...