我試圖刪除以長字符串(即回覆電子郵件)中的字符'>'開始的任何行。刪除在rails字符串中以>開頭的行
在PHP中,我會用if語句迭代每行,在linux中我會嘗試使用sed或awk。
什麼是最優雅的鋼軌方法?
我試圖刪除以長字符串(即回覆電子郵件)中的字符'>'開始的任何行。刪除在rails字符串中以>開頭的行
在PHP中,我會用if語句迭代每行,在linux中我會嘗試使用sed或awk。
什麼是最優雅的鋼軌方法?
你的問題暗示輸入一個字符串,包含多行。 你是否希望輸出只是一個多行的字符串?我假設是的。
或者使用字符串和數組操作:
str.lines.reject{|x| x =~ /^>/}.join # this will return a new string, without those ">" lines
或使用正則表達式:
str.gsub(/^>.+\n*/. '')
更好的解決方案:
您將需要使用非貪婪的多線匹配模式爲您的正則表達式:?
str.gsub(/^>.*?$\n*/m, '') # by using gsub!() you can modify the string in place
^>在一行
的開頭匹配您的「>」字符* $匹配的起始字符,直到行結束之後的任何字符(非貪婪)
\ n *換行字符本身匹配,如果任何(您想刪除以及)
「米」在正則表達式的結束表明多線路匹配,這將適用於RegExp用於字符串中的每一行。
你可以試試這個:
your_string.gsub(/^\>.+\n/,'')
我認爲你應該刪除標記sed和awk,除非sed/awk的解決方案也被你接受。 – Kent