Ruby正则表达式用于将下划线解析为斜体

时间:2012-01-25 21:46:29

标签: ruby regex

我正在尝试将斜体添加到与正则表达式匹配的文本中,但它失败了:

string = 'this should have _emphasis_ but this_one_should_not'
string.gsub!(%r{ (\*|_) (\S|\S.*?\S) \1 }x, %{<em>\\2</em>})
string.should == 'this should have <em>emphasis</em> but this_one_should_not'

# actual = 'this should have <em>emphasis</em> but this<em>one</em>should_not'

中间带斜体的那个被错误地改为斜体。我从其他地方复制了这段代码,但是我需要调整它以便它适用于这个用例。

1 个答案:

答案 0 :(得分:2)

这是一个有效的方法:

string = 'this should have _emphasis_ but this_one_should_not'
string.gsub!(%r{(^|\s)([*_])(.+?)\2(\s|$)}x, %{\\1<em>\\3</em>\\4})
string.should == 'this should have <em>emphasis</em> but this_one_should_not'

here's a demo