我正在尝试将斜体添加到与正则表达式匹配的文本中,但它失败了:
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'
中间带斜体的那个被错误地改为斜体。我从其他地方复制了这段代码,但是我需要调整它以便它适用于这个用例。
答案 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'