给出一个像这样的字符串:
Normal P start
<pre><code>
feed << feed_item.attributes.merge({
:photo_url = "XXX",
:full_name ="XXX",
:meta = "XXX"
})
</code></pre>
Normal P End
我想在<pre><code>
代码中找到4个空格的所有实例,然后将这些匹配替换为''
。
这是我到目前为止所拥有的:
连连呢?关于如何做这个红宝石?
已更新
在尝试将用于标记的4个空格修剪为代码之前输出:
<div class="message">Normal P start
<pre><code> feed << feed_item.attributes.merge({
:photo_url => "XXX",
:full_name => "XXX",
:meta => "XXX"
})
</code></pre>
Normal P end</div>
答案 0 :(得分:1)
我确信有一种方法可以用一个正则表达式做到这一点,但我已经不耐烦了,以稍微昂贵的方式做到这一点:
str.match(/(<pre><code>)(.*)(<\/code><\/pre>)/)
head = $1
sub_str = $2
tail = $3
sub_str.gsub!(' ','')
str = [head, sub_str, tail].join
答案 1 :(得分:1)
string = <<EOS
<div class="message">Normal P start
<pre><code> feed << feed_item.attributes.merge({
:photo_url => "XXX",
:full_name => "XXX",
:meta => "XXX"
})
</code></pre>
Normal P end</div>
EOS
puts string.gsub(/<pre><code>(.*)<\/code><\/pre>/m) { $&.gsub(/(?<=<pre><code>)\s*/, "\n").gsub(/^\s{4}/, '') }