это еще один, который захватывает все отступы строк в одном блоке
я есть регулярное выражение в 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Вот.