如何编写与行首或符号不匹配的正则表达式?

时间:2017-02-27 03:53:46

标签: ruby regex match

我使用的是Ruby 2.4。如何编写正则表达式,其中匹配最后一个字符为破折号,前一个字符不是破折号或行的开头。所以这个表达式匹配

"-"

as shoudl

"ab-"

但这不应该

"---"

我尝试了以下但我没有匹配任何东西

2.4.0 :012 > word = "abc-"
 => "abc-" 
2.4.0 :013 > word =~ /(^|\^\-)\-$/
 => nil 

2 个答案:

答案 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上查看。