[英]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.