在Ruby中,=〜和/ \是什么意思?

St3*_*St3 9 ruby

我一直在自学Ruby和一定问题,我试图解决我注意到很多人都在使用=~,并/\在他们的代码.我不确定它们是如何工作的,只是想解释一下.例如,我正在查看这个Pig Latin翻译器的某些代码,这是我第一次看到这些被使用.

def piglatin(word)
   if word =~ (/\A[aeiou]/i)
      word = word + 'ay'
   elsif word =~ (/\A[^aeiou]/i)
      match = /\A[^aeiou]/i.match(word)
      word = match.post_match + match.to_s + 'ay'
   end
word
end
Run Code Online (Sandbox Code Playgroud)

我只是对/\斜线和斜线感到困惑=~

小智 28

=~ 被称为"匹配运算符",可用于将字符串与正则表达式进行匹配.

/\实际上是两件事的一部分. /表示正则表达式的开头,\A被称为"锚",并且表示"从字符串的开头匹配".

编辑:这是一个文档的链接,可以帮助您了解更多像您发布的代码.

谢谢Wayne Conrad对'/ \'进行更正

  • @tadman是的,Rubular是一个很好的资源,但我绝对建议新的Rubyists检查官方文档,因为它涵盖了括号表达式和如何开始的事情. (3认同)

Dar*_*use 7

=~ 是Ruby的模式匹配运算符.

它将左侧的正则表达式与右侧的字符串进行匹配.

如果找到匹配项,则返回字符串中第一个匹配项的索引.如果找不到该字符串,则返回nil.

/abc/ =~ "abcdef"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,表达式返回0,因为这是字符串中"abc"的第一个匹配的索引.

/xyz/ =~ "abcdef"
Run Code Online (Sandbox Code Playgroud)

返回nil,因为在字符串中的任何地方都找不到"xyz".

至于/\:

/     Defines the start and end of a regular expression
\     References a regular expression
Run Code Online (Sandbox Code Playgroud)

例如:

\d => Matches all digits
Run Code Online (Sandbox Code Playgroud)