2016-06-11 154 views
0

我有健全的代碼塊一些,而無法理解的語法。我無法做出好的搜索。代碼是

keys.map { |k| k =~ /\./; $` } 

什麼意思$`?我試着在控制檯用它玩,但沒有理解它是如何工作

回答

3

當使用正則表達式匹配字符串,則$`當前賽前的字符串相匹配。像這樣:

irb> "hello world".match(/world/) 
=> #<MatchData "world"> 
irb> $` 
=> "hello " 

我要補充Ruby的文檔以供參考:http://ruby-doc.org/core-2.0.0/doc/globals_rdoc.html

更多信息:

irb> "hello world".match(/world/) 
=> #<MatchData "world"> 
irb> $` 
=> "hello " 
irb> $PREMATCH 
=> nil 
irb> require 'english' 
=> true 
irb> $PREMATCH 
=> "hello " 
irb> 
+0

感謝:如果您使用'english' library,該'可以用一句話預匹配替換您!正是我問 –

+0

爲'Regexp'文檔列出了[特殊全局變量(http://ruby-doc.org/core-2.3.1/Regexp.html#class-Regexp-label-Special+global+variables )關於正則表達式。 – Stefan

+0

在你的例子,你還可以通過引用它。['MatchData#pre_match'(http://ruby-doc.org/core-2.3.1/MatchData.html#method-i-pre_match) – Stefan