Ruby奇特变量特殊性质讲解
创始人
2024-06-16 13:40:28
0

Ruby语言作为一种新型的编程语言,具有很多和其他编程语言不同的特有的性质。在这里我们就为大家介绍一些Ruby奇特变量的相关概念。#t#

以前ruby从perl中借鉴了很多东西,Ruby奇特变量其中之一就是全局的魔法变量,在这些变量中,估计没有没有哪个有$_更奇特。比如,方法gets有这个一个效果:

在返回刚读到的行数据的同时,也把这行的数据存入$_.如果你调用print方法而没有带参数,那么它将会打印出$_中的内容。如果你在写if或者while语句时,仅将一个正则表达式作为条件,那么这个正则表达式会自动去匹配$_.这样的话,我们可以写出下面这个短小精悍的程序来实现在所有的行中找出那些包含邮箱地址的行。

  1. while gets  
  2. if /[a-zA-Z0-9\.\-_]
    @[a-zA-Z0-9\.\-_]/  
  3. print  
  4. end  
  5. end 

但是,对于Ruby来说,这样还不够简洁,我们可以这样

  1. ARGF.each {|line| print line if 
    line =~ /[a-zA-Z0-9\.\-_]@[a-zA-Z0-9\.\-_]/ } 

呵呵,怎么样,吃惊了吧,一条语句就搞定了,Ruby奇特变量就是高效!

另外还有一个全局变量,$. 里面的内容是文件的总行数

还有其他的全局变量$&,&`,&' 这几个全局变量分别用于正则表达式中。

当你用match或者=~去匹配一个字符串和一个正则表达式时,结果是:$&存放字符串中匹配正则表达式的部分,$`存放字符串中$&部分的前一个字符串,$'存放字符串中$&部分的后一个字符串。

比如

  1. str="good day! woodfish1988@
    163.com It's a email" 
  2. reg=/[a-zA-Z0-9\-\._]+@
    [a-zA-Z0-9\-\._]+/  
  3. reg=~str  
  4. puts $`,$&,$' 

 

 

结果是

good day!
woodfish1988@163.com
It's a email

同时,在匹配后全局标量$1..$9里面存放的匹配于正则表达式中的各个小内容(也就是由括号括起来的内容,具体请看正则表达式教程)

例如:

 

  1. code="www.google.com'>Google" 
  2. reg=/(.+)<\/a>/  
  3. reg=~code  
  4. puts $1,$2 

结果是

http://www.google.com
Google

以上就是对Ruby奇特变量的具体介绍。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...