簡體   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