I am trying to parse out the string:
My dog “ate” my “math homework” and “my cat”
into the array:
[My, dog, ate, my, math homework, and, my cat]
Does anybody know a good way to do this?
Thank you in advance,
Cheri
I am trying to parse out the string:
My dog “ate” my “math homework” and “my cat”
into the array:
[My, dog, ate, my, math homework, and, my cat]
Does anybody know a good way to do this?
Thank you in advance,
Cheri
On Jan 30, 12:28 pm, Cheri R. [email protected] wrote:
I am trying to parse out the string:
My dog “ate” my “math homework” and “my cat”
into the array:
[My, dog, ate, my, math homework, and, my cat]
irb(main):001:0> str = ‘My dog “ate” my “math homework” and “my cat”’
=> “My dog "ate" my "math homework" and "my cat"”
irb(main):002:0> str.scan( /“[^”]+“|\w+/ ).map{ |w| w.gsub '”', ‘’ }
=> [“My”, “dog”, “ate”, “my”, “math homework”, “and”, “my cat”]
Not a very robust solution. Won’t handle a " in the middle of some
quotes, or an incorrectly unpaired quote.
On Jan 30, 2008, at 12:28 PM, Cheri R. wrote:
My dog “ate” my “math homework” and “my cat”
cfp2:~ > cat a.rb
string = ‘My dog “ate” my “math homework” and “my cat”’
re = %r/[“'][^”‘]+["’]|\w+/
tokens = string.scan re
puts tokens
cfp2:~ > ruby a.rb
My
dog
“ate”
my
“math homework”
and
“my cat”
On Jan 30, 2008, at 2:28 PM, Cheri R. wrote:
I am trying to parse out the string:
My dog “ate” my “math homework” and “my cat”
into the array:
[My, dog, ate, my, math homework, and, my cat]
Does anybody know a good way to do this?
require “shellwords”
string = ‘My dog “ate” my “math homework” and “my cat”’
array = Shellwords.shellwords string
p array
HTH
Thank you for your help. Where is a good resource to read up on what
this code means? %r/[“'][^”‘]+["’]|\w+/
Thanks, Cheri
ara howard wrote:
On Jan 30, 2008, at 12:28 PM, Cheri R. wrote:
My dog “ate” my “math homework” and “my cat”
cfp2:~ > cat a.rb
string = ‘My dog “ate” my “math homework” and “my cat”’re = %r/[“'][^”‘]+["’]|\w+/
tokens = string.scan re
puts tokens
cfp2:~ > ruby a.rb
My
dog
“ate”
my
“math homework”
and
“my cat”
On Jan 30, 2008 2:28 PM, Cheri R. [email protected] wrote:
Thank you in advance,
Cheri
irb(main):001:0> require ‘rubygems’
=> false
irb(main):002:0> require ‘faster_csv’
=> true
irb(main):003:0> arr = FasterCSV.parse_line( ‘My dog “ate” my “math
homework” and “my cat”’, {:col_sep => ’ '})
=> [“My”, “dog”, “ate”, “my”, “math homework”, “and”, “my cat”]
Cheri R. wrote:
Thank you for your help. Where is a good resource to read up on what
this code means? %r/["’][^"’]+["’]|\w+/
The topic is called ‘regular expressions’. That regular expression says
to find a matching substring where:
The first character is either a single or double quote: [’"]
Brackets allow you to specify a group of characters, e.g. [a-z]. If the
first character in a matching substring is any of the characters in the
specified group, then there is a match.
Followed by a character that is not(^) one of the characters in the
specified group: [^’"]
If the first character between brackets is ^, it means look for any
character not specified between the brackets.
The + after the brackets says to look for “one or more” of the
preceding matching character, i.e. not a single or double quote.
Followed by a single or double quote: ["’]
The pipe(|) means OR. So a substring will also match if the symbols
following the pipe match.
\w means any ‘word character’, which is short hand for: [a-zA-Z0-9]
Once again the + sign following the \w means to match the \w one or more
times.
The result is that the regex matches any phrase surrounded by single or
double quotes OR any series of characters [a-zA-z0-9]. Note that a
space will not match \w so when a space is encountered, the match ends.
On Jan 30, 12:54 pm, Cheri R. [email protected] wrote:
Thank you for your help. Where is a good resource to read up on what
this code means? %r/[“'][^”‘]+["’]|\w+/
Intro:
http://phrogz.net/ProgrammingRuby/tut_stdtypes.html#regularexpressions
Deep Info:
http://phrogz.net/ProgrammingRuby/language.html#regularexpressions
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs