繁体   English   中英

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

[英]What do =~ and /\ mean in 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

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

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

/\\实际上是两个独立事物的一部分。 /表示正则表达式的开头, \\A称为“锚点”,表示“从字符串的开头匹配”。

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

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

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

它将左侧的正则表达式与右侧的字符串相匹配。

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

/abc/ =~ "abcdef"

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

/xyz/ =~ "abcdef"

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

至于/\\

/     Defines the start and end of a regular expression
\     References a regular expression

例如:

\d => Matches all digits

Ruby中的等号运算符是“匹配”运算符。 它在左侧采用正则表达式,在右侧采用匹配的字符串。 表达方式:

/or/ =~ “Hello World”

将返回7,因为在字符串的索引7上找到匹配项。 索引从0开始。

表达方式:

/abc/ =~ “Hello World”

将返回零,因为没有匹配。

使用/\\A=~除此之外,该代码写得不好,所以不要模仿它。 这有点像Ruby一样:

def piglatin(word)
  if word[/\A[aeiou]/i]
    word + 'ay'
  else
    word[1..-1] + word[0] + 'ay'
  end
end

piglatin('apple')   # => "appleay"
piglatin('banana')  # => "ananabay"

为了这个目的, ^将和\\A一样工作,因为它们都是“......的开头”。 这些来自Anchors定义

  • ^ - 匹配行首
  • \\A - 匹配字符串的开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM