[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

help with regular expressions

Vandana

10/24/2008 9:01:00 PM

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. -------------------------------
2. Version 2.05 bla bla
3. bla bla
4. bla
5.
6. ------------------------------
7. xx 0.0 4.5 6.7
8. xx (yy) 2.0 4.5 5.6
9. a/b/c/d () 6.0 2.0 3.4
10. a/b/c/d (yy)
11.
12. h/j/k/l/m 5.0 9.0 8.9
13. h/j/k/l/m ()
14.
15. xx 0.0 0.0 0.0
16. yy 8.9 8.9 8.0
17. ---------------------------------------


Thank you for your time & help
Vandana
9 Answers

Siep Korteling

10/24/2008 10:06:00 PM

0

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




--
Posted via http://www.ruby-....

Craig Demyanovich

10/24/2008 11:13:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

On Fri, Oct 24, 2008 at 6:05 PM, Siep Korteling <s.korteling@gmail.com>wrote:

> 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.


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

Michael Guterl

10/24/2008 11:17:00 PM

0

On Fri, Oct 24, 2008 at 7:12 PM, Craig Demyanovich
<cdemyanovich@gmail.com> wrote:
> On Fri, Oct 24, 2008 at 6:05 PM, Siep Korteling <s.korteling@gmail.com>wrote:
>
>> 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.
>
>
> 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 Guterl

Craig Demyanovich

10/24/2008 11:22:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

On Fri, Oct 24, 2008 at 7:17 PM, Michael Guterl <mguterl@gmail.com> 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

Todd Benson

10/24/2008 11:32:00 PM

0

On Fri, Oct 24, 2008 at 6:12 PM, Craig Demyanovich
<cdemyanovich@gmail.com> wrote:
> On Fri, Oct 24, 2008 at 6:05 PM, Siep Korteling <s.korteling@gmail.com>wrote:
>
>> 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.
>
>
> 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

William James

10/25/2008 12:51:00 AM

0

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?
>
> 1. -------------------------------
> 2. Version 2.05 bla bla
> 3. bla bla
> 4. bla
> 5.
> 6. ------------------------------
> 7. xx 0.0 4.5 6.7
> 8. xx (yy) 2.0 4.5 5.6
> 9. a/b/c/d () 6.0 2.0 3.4
> 10. a/b/c/d (yy)
> 11.
> 12. h/j/k/l/m 5.0 9.0 8.9
> 13. h/j/k/l/m ()
> 14.
> 15. xx 0.0 0.0 0.0
> 16. yy 8.9 8.9 8.0
> 17. ---------------------------------------
>
>
> Thank you for your time & help
> Vandana

Awk:

awk "/\//" myfile


Ruby:

ruby -ne "print if /\//" myfile


--

Sebastian Hungerecker

10/25/2008 2:52:00 AM

0

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
--
Jabber: sepp2k@jabber.org
ICQ: 205544826

Peña, Botp

10/25/2008 5:58:00 AM

0

From: Todd Benson [mailto:caduceass@gmail.com]=20
# 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 } =3D> array
enum.select {| obj | block } =3D> 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 =3D=3D 0 } #=3D> [3, 6, 9]


Vandana

10/27/2008 8:30:00 PM

0


Thanks to all!

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

Thanks once more.
> From: Todd Benson [mailto:caduce...@gmail.com]


> # 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]