# Search pattern

Hi all,

I have a Ruby script as follow. What I try to do is to find a pattern in
the string and report its position. I wonder how to get the position of
pattern in the string.

Li

seq=“5’aaaAAAAAACCCCCCCCTTTTTTTGGGGGGGGG-3’”

seq.upcase!# change to upper case
puts “old sequence:”
puts seq.gsub!(/[^A-Z]/,’’)# extract the string
puts pattern if seq=~/AC/

#how to get the position of pattern in the string?

Alle giovedÃ¬ 10 gennaio 2008, Li Chen ha scritto:

seq=“5’aaaAAAAAACCCCCCCCTTTTTTTGGGGGGGGG-3’”

seq.upcase!# change to upper case
puts “old sequence:”
puts seq.gsub!(/[^A-Z]/,’’)# extract the string
puts pattern if seq=~/AC/

#how to get the position of pattern in the string?

String=~ returns the position of the starting of the match, so

seq=~pattern

will return what you want.

Stefano

Stefano C. wrote:

Alle giovedÃ¬ 10 gennaio 2008, Li Chen ha scritto:

seq=“5’aaaAAAAAACCCCCCCCTTTTTTTGGGGGGGGG-3’”

seq.upcase!# change to upper case
puts “old sequence:”
puts seq.gsub!(/[^A-Z]/,’’)# extract the string
puts pattern if seq=~/AC/

#how to get the position of pattern in the string?

String=~ returns the position of the starting of the match, so

seq=~pattern

will return what you want.

Stefano
The size if seq is 33. What I try to do is starting position of “AC” in
the seq.

How do I calculate the position of it?

Thanks,

Li

Li Chen wrote:

How do I calculate the position of it?
For some reason I have the Jeopardy melody in my head now…
Anyway:

seq=“AACGTGTAGGCTTGAAA”
=> “AACGTGTAGGCTTGAAA”

pattern = /TA/
=> TA

position = seq =~ pattern
=> 6

seq[position,2]
=> “TA”

seq[position…-1]
=> “TAGGCTTGAAA”

seq[pattern]
=> “TA”

HTH,
Sebastian

Li Chen wrote:

seq=~pattern

will return what you want.

Stefano
The size if seq is 33. What I try to do is starting position of “AC” in
the seq.

How do I calculate the position of it?

Thanks,

Li
You’re so close.

seq=“5’aaaAAAAAACCCCCCCCTTTTTTTGGGGGGGGG-3’”

seq.upcase!# change to upper case
puts “old sequence:”
puts seq.gsub!(/[^A-Z]/,’’)# extract the string
puts position = seq=~/AC/
#The counting starts at zero. Or use the more simple but less powerfull
puts position = seq.index(“AC”)

regards,

Siep

Li Chen wrote:

Now I have a question: is it possible in Ruby to highlight or underscore
or use different font size for the found pattern?

That depends on how/where you output the data, obviously. If you’re
writing a
GUI app or a webpage you can, of course, go as crazy with the font as
you
want to.
In terminal apps you don’t have control about font size or face.
Changing
color, inverting color or underlining is possible, but terminal
dependant
(specifically I don’t think the terminal in Windows handles ANSI escape
sequences). There probably are gems to abstract away the differences
between
platforms, though.

HTH,
Sebastian

Hi all,

Thank you all for the help.

Now I have a question: is it possible in Ruby to highlight or underscore
or use different font size for the found pattern?

Li

Sebastian H. wrote:

Li Chen wrote:

Now I have a question: is it possible in Ruby to highlight or underscore
or use different font size for the found pattern?

That depends on how/where you output the data, obviously. If you’re
writing a
GUI app or a webpage you can, of course, go as crazy with the font as
you
want to.
In terminal apps you don’t have control about font size or face.
Changing
color, inverting color or underlining is possible, but terminal
dependant
(specifically I don’t think the terminal in Windows handles ANSI escape
sequences). There probably are gems to abstract away the differences
between
platforms, though.

HTH,
Sebastian

Thank you so much,

Li