我的markdown實現將雙連字符轉換爲分隔符。例如,一個 - B成爲一個 - B將連字符轉換爲雙連字符的正則表達式
但有時用戶寫一個 - B時,他們的意思是一個 - B。我想要一個正則表達式來解決這個問題。
很明顯body.gsub(/ - /, " -- ")
想到了,但這樣做會降低降價的無序列表 - 即如果一條線開始- list item
,它將變爲-- list item
。因此,解決方案必須只換出連字符時,有一個單詞字符某處左手
我的markdown實現將雙連字符轉換爲分隔符。例如,一個 - B成爲一個 - B將連字符轉換爲雙連字符的正則表達式
但有時用戶寫一個 - B時,他們的意思是一個 - B。我想要一個正則表達式來解決這個問題。
很明顯body.gsub(/ - /, " -- ")
想到了,但這樣做會降低降價的無序列表 - 即如果一條線開始- list item
,它將變爲-- list item
。因此,解決方案必須只換出連字符時,有一個單詞字符某處左手
可以匹配一個單詞字符連字符的左側,使用替換字符串中的逆向引用把它放回去:
body.gsub(/(\w) - /, '\1 -- ')
也許,如果你想多一點接受...
gsub(/\b([ \t]+)-(?=[ \t]+)/, '\1--')
\ b [\ t]強制通過一個單詞邊界條件的空白之前非whitepace。我不使用\ s來避免線路運行。我也只使用一個捕獲來保存前面的空格(Ruby 1.8.x有沒有?<=
?)。
這個正則表達式對yjerem的(簡單的)答案有什麼好處? – 2010-08-09 16:19:47
@Horace它接受更多並保留輸入的空格(空格或製表符)。例如:「Hello \ t \ t- world!」將會變成「Hello \ t \ t--世界!」,這可能會或可能不合意。 – 2010-08-10 18:43:53
你還打了一個\ s?在那裏照顧有沒有空間: (\ w)\ s? - – 2010-07-20 01:58:07