文档章节

ruby面向对象语言学习第四天

若狼
 若狼
发布于 2016/04/25 23:27
字数 1015
阅读 55
收藏 1

    今天继续学习ruby的基本类型,正则表达式,它涵盖的内容非常多。

六、正则表达式

    正则表达式指的是一种模式,一般用来和字符串进行匹配,通常一类字符串都具有相同的模式,如电话号码,邮箱等,所以它最适合用来做相同类型字符串的查账,替换,匹配工作,在ruby中它属于Regexp对象。

    同前面说的几种类型一样,在这里正则表达式是基本类型,就是说只要按照固定的格式写,ruby就会把字符串创建成正则表达式对象。正则表达式有两种创建方式,第一种写在两个/中间如:

 /abc/ #正则表达式        /\s*[a-z]/ #正则表达式

   第二种写法,前面加%r后面跟成对的符号({},[ ],<>等),内容写在符号里,如:

 %r{abc}    #正则表达式 
%r<\s[a-z]>  #正则表达式
 %r[\s+[a-z]] #正则表达式

  之所以说它是一种模式,是因为有的字符代表的是一类字符,如上面的\s就代表空白字符(空格和tab制表符都属于空白字符),

写在中括号里面的[a-z]指a到z中的任意一个字符都可以。所以/\s[a-z]/ 可以指代任何前面有空白字符的小写字母,判断方法也很简单,我们用=~来判断,在ruby中如果能匹配到,它会返回开始匹配到的位置,如果不能匹配则返回空值。例如

/\s[a-z]/ =~ " a"  #打印值为0
"g z" =~ /\s[a-z]/ #打印值为1
/\s[a-z]/ =~ "ab"  #打印值为空

=~是匹配操作符,具体模式在前还是字符串在前无所谓,但有一个一定要是正则表达式。

   究竟正则还有多少表示模式的字符,而它们又该如何解释,我在这做大致的列举。

   模式中.,|,(,),[,],{,},\,+,^,$,*,?都有特殊的含义,除了这些之外其它字符均匹配它本身,要想让这些特殊字符匹配它自己就需要在前面加转义字符\,如:\.,\|,\+等。

   另外转义字符接某些字母也有特殊含义,如: 

\d  代表0到9的数字字符。
\D  代表除数字以外的任何字符。
\s  代表空白字符(通常是空格,制表符,换行符等)
\S  代表除空白字符以外的其它字符
\w 代表a到z的大小写字母和0到9的数字
\W  代表除字母和数字以外的任何字符

特殊字符的含义

.点 匹配除换行符 \r\n(就是按下回车产生的字符)以外的所有字符
| 代表二选一  如x|y ,匹配x或y
[] 表示一个集合 如[abc],匹配a,b,c中的任何一个都可以
^ 匹配字符串的开始位置 如\^a\ 字符串必须已a开头才能匹配,如果^被放在[]内意义会发生变化,表示求反,如[^abc]表示匹配除a,b,c以外的其它字符
$ 匹配字符串的结束位置
*,+,? 跟在字符后面,表示字符可重复的次数      *(零次或多次),+(一次或多次), ?(零次或一次)
{} 也可以表示字符重复次数,只是比*,+,?更具体,如:{n,m}表示最少出现n次,最多出现mc次,{n,}表示最少出现n,{n}表示只出现n次。
() 代表编组,就是把括号内的出现的字符当做一个整体,组的作用除了划分优先级以外,每个组都是一个单独的正则匹配,它的匹配结果可以通过$1...$9来获取组的匹配结果。

 

© 著作权归作者所有

若狼
粉丝 0
博文 4
码字总数 3691
作品 0
成都
程序员
私信 提问
Object-C基础-01-概述

回到顶部 前言 目前来说,Objective-C(简称OC)是iOS开发的核心语言,在开发过程中也会配合着使用C语言、C++,OC主要负责UI界面,C语言、C++可用于图形处理。近来,流传Ruby、C#也可以开发iOS...

Corwien
2016/03/16
43
0
一、Objective-C概述

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略...

长平狐
2013/03/28
161
0
Ruby 学习路径

曾几何时,在初学完编程之后,好长一段时间停留在初级程序员阶段,不知道怎么再提高。那时候想着如果有人分享个某个语言的学习路径的话就太好了。 现在,我给大家分享一些我经过各种弯路以后...

rocLv
2017/12/25
0
0
全世界 5 种最需要的编码语言,一不小心——PHP上榜了

  现在很多有抱负的、想在技术上、薪资上有很大提升的朋友们,对于目前行业内广泛使用的数十种编码语言,很难选择。   这里,小编为大家整合了5种最需要的编程语言的简单介绍。这个排名,...

学编程C语言以及
2017/09/13
0
0
作为初学者,php,python和ruby应学哪个?

  【IT168 评论】对于web开发初学者来说,最大的问题就是学习哪种编程语言更适合未来的职业发展并且更有前景。你要考虑都有哪些编程语言,各自的优缺点是什么、每种编程语言的学习周期有多...

it168网站
2017/03/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【在 Nervos CKB 上做开发】Nervos CKB 脚本编程简介[3]:自定义代币

原文作者:Xuejie 原文链接:https://xuejie.space/2019_09_06_introduction_to_ckb_script_programming_udt/ Nervos CKB 脚本编程简介[3]:自定义代币 CKB 的 Cell 模型和 VM 支持许多新的用...

NervosCommunity
52分钟前
4
0
通过OAuth2.0 获取授权访问SF 用户数据

通过OAuth2.0 获取授权访问SF 用户数据 OAuth2.0 相关知识 深入了解 Salesforce 中的 OAuth 2.0(SF官方) OAuth 2.0 的一个简单解释(阮一峰大神) OAuth 2.0 的四种方式(阮一峰大神) GitHub OA...

在山的那边
58分钟前
7
0
编写程序:从键盘上接受一个三位数(首先要确保是三位数),计算出各位之和输出。

#include<stdio.h> int main() { int a,sum=0; printf("请输入一个三位数:\n"); scanf("%d",&a); sum=a/100+a%100/10+a%10; printf("这三个数的和:%d",sum); return 0; }......

201905021729吴建森
今天
7
0
如何离开/退出/停用Python virtualenv

我正在使用virtualenv和virtualenvwrapper。 我可以使用workon命令在virtualenv之间切换。 me@mymachine:~$ workon env1(env1)me@mymachine:~$ workon env2(env2)me@mymachine:~$ workon e......

技术盛宴
今天
7
0
成长之路 万事坚持难

任何事情开了头,想要更好的发展下去,不忘初心,就一定要坚持下去。 以前自己坚持了一些事情,比如早睡不吃东西,由于中途断了,没有及时止损,导致又接着恶习断了几天。所以 及时的反省和调...

T型人才追梦者
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部