2016-03-10 45 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