我在Ruby中有一個正則表達式,它在多行模式下無法正常工作。如何在Ruby中修復這個多行正則表達式?
我試圖將Markdown文本轉換爲Redmine中使用的Textile-eque標記。問題出在我的正則表達式轉換代碼塊。它應該找到任何帶有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 here上測試這個正則表達式。
爲什麼不包括換行符在你的正則表達式:'((?:?\ S {4} | \ t)* \ N)+' – 2011-04-19 16:51:10
除了XHTML自足[正則表達式匹配開放標籤的可能重複標籤](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – 2011-04-20 23:09:36
@Mladen Jablanovic我無法讓你的例子使用這段代碼工作: '放置markdownText.gsub!(/((?:\ s {4} | \ t)。*?\ n)+ /,「
」)'。 '\ n'與'$'有什麼不同? – DonovanChan 2011-04-21 15:45:22