为什么这个ruby代码不比正则表达式?

时间:2010-03-01 04:55:04

标签: ruby

if string == /\s{1,}/ or string == /\n{1,}/
  puts "emptiness..."
end

2 个答案:

答案 0 :(得分:25)

要针对String测试Regex,您可以执行以下任何操作:

1:使用String#match

' '.match /\s{1,}/    # => #<MatchData:0x118ca58>
'f'.match /\s{1,}/    # => nil

2:使用Regex#match

/\s{1,}/.match ' '    # => <MatchData:0x11857e4>
/\s{1,}/.match 'f'    # => nil

3:使用String#=~

' ' =~ /\s{1,}/       # => 0
'f' =~ /\s{1,}/       # => nil

4:使用Regex#=~

/\s{1,}/ =~ ' '       # => 0
/\s{1,}/ =~ 'f'       # => nil

5:使用Regex#===(这是case语句中使用的内容):

/\s{1,}/ === ' '      # => true
/\s{1,}/ === 'f'      # => false

注意:String#=== 做你想做的事:

' ' === /\s{1,}/      # => false
'f' === /\s{1,}/      # => false

答案 1 :(得分:7)

与Ruby中的正则表达式进行比较时,您应该使用'=〜'比较而不是'=='。

试一试,看看它是否能满足您的期望。