Учитывая строку, как сопоставить все экземпляры 4 пробелов и заменить? - PullRequest
0 голосов
/ 18 января 2012

дана строка примерно так:

Normal P start

<pre><code>
        feed &lt;&lt; feed_item.attributes.merge({
          :photo_url = "XXX",
          :full_name ="XXX",
          :meta = "XXX"
        })
Нормальный конец P

Я хотел бы найти все экземпляры 4 пробелов внутри тегов <pre><code>, а затем заменить эти совпадения на ''.

Вот что у меня есть:

http://rubular.com/r/Zs6RY3AFXp

Предложения? О том, как это сделать в рубине?

ОБНОВЛЕНО

Вывод перед попыткой обрезать 4 пробела, используемых для пометки, в качестве кода:

<div class="message">Normal P start

<pre><code>        feed &lt;&lt; feed_item.attributes.merge({
          :photo_url =&gt; "XXX",
          :full_name =&gt; "XXX",
          :meta =&gt; "XXX"
        })
Нормальный конец P

Ответы [ 2 ]

1 голос
/ 18 января 2012
string = <<EOS
<div class="message">Normal P start

<pre><code>        feed &lt;&lt; feed_item.attributes.merge({
          :photo_url =&gt; "XXX",
          :full_name =&gt; "XXX",
          :meta =&gt; "XXX"
        })
Нормальный конец P EOS помещает string.gsub (/
(.*)<\/code><\/pre>/m) { $&.gsub(/(?<=<pre><code>)\s*/, "\n").gsub(/^\s{4}/, '') }
1 голос
/ 18 января 2012

Я уверен, что есть способ сделать это с помощью одного регулярного выражения, но я достаточно нетерпелив, чтобы сделать это немного более дорогим способом:

str.match(/(<pre><code>)(.*)(<\/code><\/pre>)/)
head = $1
sub_str = $2
tail = $3
sub_str.gsub!('    ','')
str = [head, sub_str, tail].join
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...