What is the “=~” operator in Ruby?

前端 未结 7 663
情深已故
情深已故 2020-12-01 09:56

I saw this on a screencast and couldn\'t figure out what it was. Reference sheets just pile it in with other operators as a general pattern match operator.

相关标签:
7条回答
  • 2020-12-01 10:32

    Well, the reference is correct, it is the "matches this regex" operator.

    if var =~ /myregex/ then something end
    
    0 讨论(0)
  • 2020-12-01 10:39

    Regular expression string matching. Here's a detailed list of operators: http://phrogz.net/programmingruby/tut_expressions.html#table_7.1

    0 讨论(0)
  • 2020-12-01 10:43

    It matches string to a regular expression.

    'hello' =~ /^h/ # => 0

    If there is no match, it will return nil. If you pass it invalid arguments (ie, left or right-hand sides are not correct), it will either throw a TypeError or return false.

    0 讨论(0)
  • 2020-12-01 10:43

    Regular expression string matching:

    puts true if url =~ /google.com/

    You can read '=~' as 'is matching'.

    0 讨论(0)
  • 2020-12-01 10:53

    From ruby-doc :

    str =~ obj => fixnum or nil

    Match—If obj is a Regexp, use it as a pattern to match against str, and returns the offset position the match starts, or nil if there is no match. Otherwise, invokes obj.=~, passing str as an argument. The default =~ in Object returns false.

    "cat o' 9 tails" =~ /\d/   #=> 7
    "cat o' 9 tails" =~ 9      #=> false
    
    0 讨论(0)
  • 2020-12-01 10:58

    As the other answers already stated, =~ is the regular expression vs string match operator.

    Note: The =~ operator is not commutative

    Please consider the note below from the ruby doc site, as I have seen yet only the first form

    str =~ regexp 
    

    used in the other answers:

    Note: str =~ regexp is not the same as regexp =~ str. Strings captured from named capture groups are assigned to local variables only in the second case.

    Here is the documentation for the second form: link

    0 讨论(0)
提交回复
热议问题