[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

how to do this regex substitution?

skanemupp

5/9/2008 2:41:00 AM

i want to replaxe the pattrn consonant o consonant, ie hoh -> h, dad -
> d etc.

so i have to check that the letter after the letter i am at is o and
the next one is equal to the one i am at.

so
/qwrtpsdfghjklzxcvbnm/o/qwrtpsdfghjklzxcvbnm isnt true(and doesnt work
anyway).

2 Answers

Peña, Botp

5/9/2008 3:30:00 AM

0

From: globalrev [mailto:skanemupp@yahoo.se]=20
# i want to replaxe the pattrn consonant o consonant, ie hoh -> h, dad -
# > d etc.
# so i have to check that the letter after the letter i am at is o and
# the next one is equal to the one i am at.

hi globalrev,

there are many ways.

best if you can play in irb,

"hoh" =3D~ /(.)o\1/
#=3D> 0

"testhoh" =3D~ /(.)o\1/
#=3D> 4

$1
#=3D> "h"

if "testhoh".match(/(.)o\1/)
"match!"
else
"sorry"
end
#=3D> "match!"

"qwxoxtyasdfzozghj".gsub(/(.)o\1/) do |m|
p [m,$1,$~.pre_match,$~.post_match,$~.captures]
end
["xox", "x", "qw", "tyasdfzozghj", ["x"]]
["zoz", "z", "qwxoxtyasdf", "ghj", ["z"]]
#=3D> "qwtyasdfghj"

"qwxoxtyasdfzozghj".gsub(/(.)o\1/) do |m|
$1
end
#=3D> "qwxtyasdfzghj"

"qwxoxtyasdfzozghj".gsub(/(.)o\1/) do |m|
"<#$1>"
end
#=3D> "qw<x>tyasdf<z>ghj"

"qwxoxtyasdfzozghj".gsub(/(.)o\1/){"<#$1>"}
#=3D> "qw<x>tyasdf<z>ghj"

your next task now is to determine whether a certain char is a consonant =
regardless of case.

kind regards -botp

Peter Jones

5/10/2008 5:51:00 PM

0

globalrev <skanemupp@yahoo.se> writes:
> i want to replaxe the pattrn consonant o consonant, ie hoh -> h, dad -
>> d etc.
>
> so i have to check that the letter after the letter i am at is o and
> the next one is equal to the one i am at.
>
> so
> /qwrtpsdfghjklzxcvbnm/o/qwrtpsdfghjklzxcvbnm isnt true(and doesnt work
> anyway).

You question is a bit confusing. You said you wanted to replace:

consonant o consonant

with:

consonant

Yet, one of your examples is dad, which doesn't fit that pattern. Did
you mean "consonant vowel consonant"?

Either way, here is one possibility. I'll leave "dad" as an exercise.

,----
| >> "hoh".sub(/([qwrtpsdfghjklzxcvbnm])o\1/, '\1')
| => "h"
`----

--
Peter Jones [pjones at domain below]
pmade inc. - http:/...