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

gag*_*gag 3 ruby

if string == /\s{1,}/ or string == /\n{1,}/
  puts "emptiness..."
end
Run Code Online (Sandbox Code Playgroud)

Jam*_*sen 25

要测试String针对a Regex,你可以做以下五件事中的任何一件事:

1:使用String#match:

' '.match /\s{1,}/    # => #<MatchData:0x118ca58>
'f'.match /\s{1,}/    # => nil
Run Code Online (Sandbox Code Playgroud)

2:使用Regex#match:

/\s{1,}/.match ' '    # => <MatchData:0x11857e4>
/\s{1,}/.match 'f'    # => nil
Run Code Online (Sandbox Code Playgroud)

3:使用String#=~:

' ' =~ /\s{1,}/       # => 0
'f' =~ /\s{1,}/       # => nil
Run Code Online (Sandbox Code Playgroud)

4:使用Regex#=~:

/\s{1,}/ =~ ' '       # => 0
/\s{1,}/ =~ 'f'       # => nil
Run Code Online (Sandbox Code Playgroud)

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

/\s{1,}/ === ' '      # => true
/\s{1,}/ === 'f'      # => false
Run Code Online (Sandbox Code Playgroud)

注意:String#=== 没有做你想要的:

' ' === /\s{1,}/      # => false
'f' === /\s{1,}/      # => false
Run Code Online (Sandbox Code Playgroud)


Pet*_*ete 7

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

尝试一下,看看它是否能满足您的期望.