Help with regular expressions

Hi all,

I’m fairly new to programming with regular expressions. I would like
some help with the
following. Consider the format given below as what I will receive in a
file.

While reading from the file, Im interested only in reading those lines
that have the forward-slash’ in
them (lines 9,10,12, 13). How can I do this in ruby?


  1. Version 2.05 bla bla
  2. bla bla
  3. bla

  4. xx 0.0 4.5 6.7
  5. xx (yy) 2.0 4.5 5.6
  6. a/b/c/d () 6.0 2.0 3.4
  7. a/b/c/d (yy)
  8. h/j/k/l/m 5.0 9.0 8.9
  9. h/j/k/l/m ()
  10. xx 0.0 0.0 0.0
  11. yy 8.9 8.9 8.0

Thank you for your time & help
Vandana

Vandana wrote:

Hi all,

I’m fairly new to programming with regular expressions. I would like
some help with the
following. Consider the format given below as what I will receive in a
file.

While reading from the file, Im interested only in reading those lines
that have the forward-slash’ in
them (lines 9,10,12, 13). How can I do this in ruby?

(…)

You don’t need a regular expression for this. To select the lines which
include a slash, you can do

file = File.new( ‘D:/1.txt’ )
slashlines = file.select {|line| line.include?( ‘/’ )}
file.close
puts slashlines

The select method will read each line and put each line for which the
block is true in an array.

hth,

Siep

On Fri, Oct 24, 2008 at 6:05 PM, Siep K.
[email protected]wrote:

block is true in an array.
Siep, I can’t find any documentation on File#select, and IO#select is
not
documented as doing what you show. Could you provide more info about it?

Thanks,
Craig

On Fri, Oct 24, 2008 at 7:17 PM, Michael G. [email protected]
wrote:

It is a method from Enumerable.

ri Enumerable#select

D’oh, didn’t think of Enumerable for some reason. Time to learn more
about
file I/O.

Thanks,
Craig

On Fri, Oct 24, 2008 at 7:12 PM, Craig D.
[email protected] wrote:

The select method will read each line and put each line for which the
block is true in an array.

Siep, I can’t find any documentation on File#select, and IO#select is not
documented as doing what you show. Could you provide more info about it?

It is a method from Enumerable.

ri Enumerable#select

Michael G.

On Fri, Oct 24, 2008 at 6:12 PM, Craig D.
[email protected] wrote:

The select method will read each line and put each line for which the
block is true in an array.

Siep, I can’t find any documentation on File#select, and IO#select is not
documented as doing what you show. Could you provide more info about it?

I couldn’t find it explicitly in the docks either, but if you do
File.ancestors, you will see that Enumerable is in there.

To the OP, you could also do (for regex)…

slashlines = my_file.select {|line| line =~ ///}

Todd

Vandana wrote:

  1. h/j/k/l/m 5.0 9.0 8.9
  2. h/j/k/l/m ()
  3. xx 0.0 0.0 0.0
  4. yy 8.9 8.9 8.0

Thank you for your time & help
Vandana

Awk:

awk “///” myfile

Ruby:

ruby -ne “print if ///” myfile

Vandana wrote:

While reading from the file, Im interested only in reading those lines
that have the forward-slash’ in
them (lines 9,10,12, 13). How can I do this in ruby?

file.grep %r(/)
or
file.grep ///

HTH,
Sebastian

From: Todd B. [mailto:[email protected]]

I couldn’t find it explicitly in the docks either, but if you do

File.ancestors, you will see that Enumerable is in there.

qri can find it

botp@botp-desktop:~$ qri File#select
------------------------------------------------------ Enumerable#select
enum.find_all {| obj | block } => array
enum.select {| obj | block } => array

 Returns an array containing all elements of enum for which block
 is not false (see also Enumerable#reject).

    (1..10).find_all {|i|  i % 3 == 0 }   #=> [3, 6, 9]

Thanks to all!

I used f.grep(///) to read the lines that were needed.

Thanks once more.

From: Todd B. [mailto:[email protected]]