2016-03-10 44 views
0

我的目标是能够定义不删除其他字符串而可以删除的不同的子字符集。打开更好的想法。如何删除定义的字符串之间的红宝石字符串?

我现在拥有的是:

@outbound_text = " XTEST this is hidden XTEST hey there, what's up! XTEST this is also hidden XTEST but then I just keep writing here "

我尝试以下,但意识到这是删除hey there, what's up

if ENV['ENVIRONMENT'] == 'test' 

    # this will allow the XTEST string to come through 

else # for production and development, remove the XTEST 

    unless @outbound_text.gsub!(/XTEST(.*)XTEST/ , '').nil? 
    @outbound_text.strip! 
    end 

    logger.debug "remove XTEST: #{@outbound_text}" 
end 

开到不同的字符串bookending什么,我需要删除(但数量隐藏的子字符串会有所不同,因此它们只能是开始和结束)。

我认为开放 - 虽然有一些它们被解析,所以打开使用Nokogiri删除隐藏的标签。我需要花一些时间来尝试,但是在尝试之前想知道是否有简单的gsub。

+0

我想指出来谁关闭这个问题被引用的问题是不一样的在这里问这个问题的MOD,答案和这个特定的该问题的版本可能会使用与该答案不同的技术。 –

+0

如果您的数据不是XML或HTML,则Nokogiri不是一个选项。如果数据是其中之一,那么您应该显示内容和您的代码,从中提取您想要的字符串。然后我们可以帮助你微调你的代码。现在你的问题听起来像一个XY问题,你有字符串,现在需要清理它,或许在提取之前做起来容易,但它仍然是XML或HTML。 –

+1

@DerrellDurrett同意你的看法。希望非贪婪的收益可以发挥作用。据说在TinMan发布了一篇关于如何将XML的部分文档用于远程的帖子,而且看起来很有希望。 – Angela

回答

1

只是要重复non-greedy

@outbound_text.gsub(/XTEST(.*?)XTEST/ , '').strip 
    # => "hey there, what's up! but then I just keep writing here" 
+0

哦,这是有趣的是,这就是这个概念。 – Angela

+0

感谢这工作很好....所以正则表达式'?'使搜索不贪心? – Angela

+0

@Angela,基本上 - 是的。它使''*'重复非贪婪是准确的。 – ndn