我试图删除以长字符串(即回复电子邮件)中的字符'>'开始的任何行。删除在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