站长网_站长创业_站长主页_站长之家_易采站长站

会员投稿 投稿指南 站长资讯通告: ruby 正则表达式 教程
搜索:
您的位置: 主页 > 教程 > 脚本教程 > ruby > » 正文

ruby 正则表达式 教程

来源: 易采站长站
我们再看一个更有趣的程序.这次我们来测试一个字符串是否和一个由简明模式(concise pattern)编码产生的描述相匹配.

在这些模式(pattern)里,一些字符或字符组合都有独特的意义,包括: 

代码如下:
[]  范围描述符 (比如,[a - z] 表示在a 到 z 范围内的一个字母)   

\w  字母或数字;相当于 [0-9A-Za-z]  

\W  非字母,数字  

\s  [ \t\n\r\f]空字符;相当于 [ \t\n\r\f]  

\S  非空字符  

\d  [0-9]数字;相当于 [0-9]  

\D  非数字字符  

\b  退格符 (0x08) (仅在范围描述符内部时)  

\b  字边界(word boundary) (在范围描述符外部时)  

\B  非字边界  

*  前面元素出现0或多次  

+  前面元素出现1或多次  

{m,n}  前面元素最少出现m次,最多出现n次  

?  前面元素最多出现1次;相当于 {0,1}  

|  与前面或后面的表达式匹配  

()  群( grouping)   


那些模式中共同使用的古怪词汇叫做正则表达式.就象Perl一样,Ruby也用前斜杠(而不是双引号)将它们括起来.如果你以前从未使用过正则表达式,也许它们看起来除了规则(regular)什么都不是,但花上一点儿时间了解它们是明智的.当你需要对字符串进行模式匹配,查找或其它操作时,它的高效的表达能力能治好你的头痛(并节约很多行代码).

举个例子,设想我们想要测试一个字符串是否符合这样的描述信息"由小写f开头,跟一个大写字母,并可能跟许多非小写字母在后面."如果你是一个老练的C程序员,大概你的头脑里已经装满几十行程序了,对不对?承认吧,你难以控制住自己.在Ruby里,你只需要将你的字符串用正则表达式/^f[A-Z](^[a-z])*$/检验一下就可以了.

那"一个由<>括起来的16位数呢"?没问题.

代码如下:
ruby> def chab(s)   # "contains hex in angle brackets" 
    |    (s =~ /<0(x|X)(\d|[a-f]|[A-F])+>/) != nil 
    | end 
  nil 
ruby> chab "Not this one." 
  false 
ruby> chab "Maybe this? {0x35}"    # wrong kind of brackets 
  false 
ruby> chab "Or this? <0x38z7e>"    # bogus hex digit 
Tags:
最新图文资讯
1 2 3 4 5 6
相关文章列表:
易采站长站 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助 -