Ruby gsub:有更好的方法吗?

我需要删除所有前导和尾随非数字字符。 这就是我提出的。 是否有更好的实施。

puts s.gsub(/^\D+/,'').gsub(/\D+$/,'') 

而不是消除你不想要的东西,通常更清楚地选择你想要的东西(使用括号)。 此外,这只需要一次正则表达式评估:

 s.match(/^\D*(.*?)\D*$/)[1] 

或者,这个方便的简写:

 s[/^\D*(.*?)\D*$/, 1] 

也许是一个#gsub(/(^\D+)|(\D+$)/, '')

此外,当有疑问Rubular它。