2011-08-26 133 views
1

我有一段文字组成,类似于以下内容:红宝石GSUB问题

==EXCLUDE 

#lots of lines of text 

==EXCLUDE 

#this is what I actually want 

所以我试图做删除不需要位:

str.gsub!(/==EX.*?==EXCLUDE/, '') 

但是,它不工作。当我试图首先删除\ n字符时,它像梦一样运行。问题是我实际上不能删除\ n字符。如何在保留换行符的情况下进行这样的替换?

回答

7

默认情况下,.不符合换行符。如果启用Ruby中m修饰符(在其他语言中,这是s修改)它应该工作:

str.gsub!(/==EX.*?==EXCLUDE/m, '') 

这里有Rubular现场演示:http://rubular.com/r/YxLSB1Iq95

2

尝试str.gsub!(/==EX.*?==EXCLUDE/m, '')

应使其跨越新的路线。

+1

假设您想保留'== EXCLUDE'行的换行符,第二个gsub arg应该是“\ n \ n”。 – JellicleCat