Project1

标题: $~是啥意思,代码详见。 [打印本页]

作者: miantouchi    时间: 2019-11-18 14:30
标题: $~是啥意思,代码详见。
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获得匹配正则表达式的所有属性的ID和匹配信息
  3.   #     返回值:二维阵列[n][0]中的ID,[n][1]中的匹配信息(MatchData)
  4.   #--------------------------------------------------------------------------
  5.   def self.get_indices(regexp)
  6.     indices = []
  7.     for i in 1...$data_system.elements.size
  8.       indices.push([i, $~]) if regexp =~ $data_system.elements[i]
  9.     end
  10.   end


这是二刀流开头定义的一段代码,里面有大量的正则和数组处理,看的我头昏脑胀
希望有人帮忙解惑

第一段代码:答题意思我知道,就是传入regexp和每个属性名称进行正则匹配,
如果匹配成功就加入indices数组当中, $~起到啥作用?我搜索了下,就有个概念性的解答。
储存正则表达式匹配中间过程信息的类,可以通过$~获取。
具体作用希望有人能发个实例看看,是什么过程



作者: fux2    时间: 2019-11-18 18:13
就理解为正则表达式中匹配到的结果吧,你可以进行一次正则匹配后输出$~变量查看
作者: ppspssss    时间: 2019-11-18 19:45



从国外google上找看不明白說什么
作者: ppspssss    时间: 2019-11-20 22:47
本帖最后由 ppspssss 于 2019-11-21 11:05 编辑

再次認真找,一找就找到了
$~
在当前作用域中,最后一次匹配成功的相关信息(MatchData对象——为处理与正则表达式的匹配过程相关的信息而设置的类)。可以使用$~[n]的形式从该数据中抽取第n个匹配结果($n),相当于是$1、$2……等同于Regexp.last_match。

  1. irb(main):012:0> $~   
  2. => #<matchdata "foobar"="" 1:"foo"="" 2:"bar"="" 3:nil="">   
  3. irb(main):026:0> $1  
  4. => "foo"  
  5. irb(main):027:0> $~[1]   
  6. => "foo"   
  7. </matchdata>
复制代码

出處:https://www.cnblogs.com/rubylouv ... /07/23/1529237.html
还有$`,$!,$@,$1,$&,$",$/,$\,$*,$$,$`,$+, $_,"$,"   不知有啥用就是了


看樣子,是叫"内部变量"的東西
p $~可以見到是匹配到所有東西的意思 ??? <待定

意思是p $~可以看到所有匹配到的東西, 比如第1个,第2个匹配到的東西








欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1