replace all except some part
My problem is simple:
I want to filter a text except some part of it. I can match easily the part I don’t want to be filtered. For example
I searched a better way to do that, but the best I can do is using split
and scan
.
def allExceptCode( f, content )
# Beware the behaviour will change if you add
# parenthesis (groups) to the regexp!
regexp=/<code[^>]*>.*?<\/code>|<pre[^>]*>.*?<\/pre>/m
tmp=""
mem=[]
content.scan(regexp).each do |c|
mem <<= c
end
i=0
content.split(regexp).each do |x|
tmp <<= send(f,x)
if not mem[i].nil?
tmp <<= mem[i]
i+=1
end
end
tmp
end
An usage is:
A better syntax would be:
I would expect the split make a search on a regular expression and then give the matched expression into the $&
variable. But it is not the case.
If someone know a nicer way to do that I will be happy to know how.
Published on 2009-09-22