假设我有一个这样的字符串:
May 12 -
我想要结束的是:
May 12
我尝试做 a gsub(/\s+\W/, '')
and 来去除尾随空格和最后一个连字符。
但我不确定如何删除M
.
想法?
使用regexmatch
代替gsub
(即提取相关字符串,而不是尝试去除不相关的部分)/\w+(?:\W+\w+)*/
:
" May 12 - ".match(/\w+(?:\W+\w+)*/).to_s # => "May 12"
请注意,这比使用更有效gsub
——将我的match
正则表达式与建议的gsub
正则表达式进行对比,我得到了这些基准(500 万次重复):
user system total real
match: 19.520000 0.060000 19.580000 ( 22.046307)
gsub: 31.830000 0.120000 31.950000 ( 35.781152)
按照建议添加gstrip!
步骤不会显着改变这一点:
user system total real
match: 19.390000 0.060000 19.450000 ( 20.537461)
gsub.strip!: 30.800000 0.110000 30.910000 ( 34.140044)
使用.strip!关于你的结果。
" May 12".strip! # => "May 12"
怎么样:
/^\s+|\s+\W+$/
解释:
/ : regex delim
^ : begining of string
\s+ : 1 or more spaces
| : OR
\s+\W+ : 1 or more spaces followed by 1 or more non word char
$ : end of string
/ : regex delim