任何人都可以向我解釋下面的代碼是Ruby的代碼嗎?這個簡單的代碼是做什麼的?
VARIABLE.scan /\((.+)\)$/
P.S.
如果VARIABLE=4
,我[]
如果VARIABLE='aa'
,我[]
是什麼代碼嗎???
任何人都可以向我解釋下面的代碼是Ruby的代碼嗎?這個簡單的代碼是做什麼的?
VARIABLE.scan /\((.+)\)$/
P.S.
如果VARIABLE=4
,我[]
如果VARIABLE='aa'
,我[]
是什麼代碼嗎???
/\((.+)\)$/
$
是行尾錨點。最外面的()
對被轉義,所以它們將匹配字符串中的文字括號。 .+
匹配一個或多個字符。
所以正則表達式匹配以括號組結束與中至少有一個字符串,如:
qdqsqsddq(1)
sqkldj(azeazeza)
並捕獲該組中的文本。
(請注意,它也符合qsd(qsdq(qsdq)
,以及「返回」 qsdq(qsdq
在這種情況下,所以其實用性是有點問題的。)通過串
/ # Regex delimiter
\( # Match "("
(.+) # Match and capture one or more (+) characters (.), except newlines
\) # Match ")"
$ # Match the end of the line (before any newlines, if present)
/ # Regex delimiter
.scan()
搜索,將所有比賽結果到一個數組。
因此,實際上,它會爲您提供一個多行字符串中所有行的數組,從該行中的第一個左括號開始,直到該行末尾的右括號。
還有一兩件事要添加到其他人的帖子:
If VARIABLE=4, I got []
這實際上拋出異常。你需要有VARIABLE =「4」(注意:字符串,Fixnum沒有這種方法)。
我也投入了一些例子:
"(4)".scan /\((.+)\)$/ # -> [["4"]]
"(42342)".scan /\((.+)\)$/ # -> [["42342"]]
"abracadabra (42342)".scan /\((.+)\)$/ # -> [["42342"]]
"abracadabra (42342) (23)".scan /\((.+)\)$/ # -> [["42342) (23"]].
# The regex do not match new lines by default.
"(4)\n(5)\n".scan /\((.+)\)$/ # -> [["4"], ["5"]].
"(4)\n(5)\n".scan /\((.+)\)$/m # -> [["4)\n(5"]]
嘗試變量=(4) – prusswan 2011-12-23 12:40:04
你能解釋一下什麼是掃描()方法呢? – 2011-12-23 12:40:27
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-scan – prusswan 2011-12-23 12:41:28