我使用的是Ruby 2.4。如何编写正则表达式,其中匹配最后一个字符为破折号,前一个字符不是破折号或行的开头。所以这个表达式匹配
"-"
as shoudl
"ab-"
但这不应该
"---"
我尝试了以下但我没有匹配任何东西
2.4.0 :012 > word = "abc-"
=> "abc-"
2.4.0 :013 > word =~ /(^|\^\-)\-$/
=> nil
答案 0 :(得分:1)
以下是我的观点:
regex = /[^-\A]-\z/
%w(- ab- ---).map { |s| s =~ regex }
=> [nil, 1, nil]
答案 1 :(得分:-1)
不是100%肯定我的要求是正确的,但这确实可以解决问题:
regex = /(^|(?!-).*)-$/
%w(- ab- ---).map { |s| s =~ regex }
#=> [0, 0, nil]
使用一些测试用例在Rubular上查看。