это еще один, который захватывает все отступы строк в одном блоке

я есть регулярное выражение в Ruby, которое не работает должным образом в многострочном режиме.

Я пытаюсь преобразовать текст Markdown в текстовую разметку, используемую в Redmine. Проблема в моем регулярном выражении для преобразования блоков кода. Он должен найти любые строки, начинающиеся с 4 пробелов или табуляции, а затем обернуть ихдо теги.

markdownText = '# header

some text that precedes code

    var foo = 9;
    var fn = function() {}

    fn();

some post text'

puts markdownText.gsub!(/(^(?:\s{4}|\t).*?$)+/m,"<pre>\n\\1\n</pre>")

Предполагаемый результат:

# header

some text that precedes code

<pre>
    var foo = 9;
    var fn = function() {}

    fn();
</pre>

some post text

Проблема в том, что закрытиедо тег печатается в конце документа, а не после "fn ();". Я попробовал несколько вариантов следующего выражения, но оно не совпадает:

gsub!(/(^(?:\s{4}|\t).*?$)+^(\S)/m, "<pre>\n\\1\n</pre>\\2")

Как получить регулярное выражение для соответствия только с отступом блока кода? Вы можете проверить это регулярное выражение на RubularВот.

Ответы на вопрос(4)

Ваш ответ на вопрос