Parsing text

Hey all,

I have a file where I need to parse information from. The format of the
first line is something like this:

“>ruby ruby |ruby|ruby ruby|text_i_want| test test”

I was thinking converting this line into an array, using the .split(//)
and keeping count of the pipe("|") character so that when it reaches the
3rd one, it reads the characters up till the 4th pipe(all in a do
iterator. So in essence, I would want to extract “text_i_want”. When i
tried this method, I got stuck. Any ideas on how to move forward? Or an
easier solution than this? Thanks!

Good Afternoon,

On Thu, Apr 21, 2011 at 6:43 PM, Cyril J. [email protected]
wrote:

Hey all,

I have a file where I need to parse information from. The format of the
first line is something like this:

“>ruby ruby |ruby|ruby ruby|text_i_want| test test”

I was thinking converting this line into an array, using the .split(//)

You got close - this should work for you

.split(/|/)[3]

That will return the 4th group of text for you

John

Thanks John and 7stud - I have a better understanding now.

A pipe is one of the special regex characters–it does not stand for a
literal pipe. A pipe is used in a regex to mean ‘OR’.

There several other ways to escape the special regex characters, so that
they will lose their special meaning and match themselves:

  1. You can use a backslash to escape the pipe.

  2. You can put the pipe in a character class:

str = “>ruby ruby |ruby|ruby ruby|text_i_want| test test”

pieces = str.split(/[|]/)
puts pieces[3]

–output:–
text_i_want

Inside a character class ([]), the special regex characters lose their
special meaning.

  1. You can call Regexp.escape to escape any special regex characters
    contained in the string, and the special characters will lose their
    special meaning:

str = “>ruby ruby |ruby|ruby ruby|text_i_want| test test”

pattern = “|”
esc_str = Regexp.escape(pattern)

pieces = str.split(/#{esc_str}/)
puts pieces[3]

–output:–
text_i_want

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs