正则表达式匹配尾随空格,但不匹配完全空格的行(缩进占位符)

tjm*_*wan 7 ruby regex whitespace

我一直在尝试构建一个与尾随空格匹配的ruby正则表达式 - 但不是缩进占位符 - 所以我可以将它们格式化.

我有这个/\b[\t ]+$/,它正在努力,直到我意识到只有当线路结束时它才有效[a-zA-Z].:-(所以我把它演变成了这个/(?!^[\t ]+)[\t ]+$/似乎它变得越来越好,但它仍然无法正常工作.我花了好几个小时试图让它工作无济于事.请帮忙.

这里有一些文本测试,因此很容易投入到Rubular中,但是缩进行被剥离所以它需要一些空格和/或制表符.一旦第3和第4行有空格,它就不应该在第3-5,7,9行上匹配.

some test test  
some test test      


  some other test (text)
  some other test (text)  
  likely here{ dfdf }
  likely here{ dfdf }        
  and this ;
  and this ;  
Run Code Online (Sandbox Code Playgroud)

或者,是否有更简单/更优雅的方式来做到这一点?

mck*_*eed 12

如果你使用1.9,你可以使用look-behind:

/(?<=\S)[\t ]+$/
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,旧版本的ruby不支持它,所以你必须处理捕获的角色:

str.gsub(/(\S)[\t ]+$/) { $1 }
Run Code Online (Sandbox Code Playgroud)