Ruby正则表达式的一个例子
来源:互联网 发布:Mac软件删除 编辑:程序博客网 时间:2024/05/21 21:45
Ruby基础教程 Programming 第四版
这本书的第十六章正则表达式类中有一个例子让人不是那么容易理解。特此分享一下我的理解。
16.5 捕获
/(.)(\d\d)+(.)/ =~ "123456"
p $1 #=>1
p $2 #=>45
p $3 #=>6
此例子中的p $2 #=>45结果让人有点难以理解,因为大家都会认为结果应该是23才对,其实不然。经过试验,书本并没有出错。正确的理解应该是+号代表重复一次以上,而$2捕获的规则就是捕获最后一次重复的结果,这是人家的规则,并无什么道理可言。以下有一个例子可以用于参考验证。
/(.)(\d\d)+?(.)/ =~ "123456"
p $1 #=>1
p $2 #=>23
p $3 #=>4
+?代表1次以上的重复中最短的部分,所以$2捕获的就只有一次,结果就如上图了。
0 0
- Ruby正则表达式的一个例子
- 一个正则表达式的例子
- 一个正则表达式的例子
- 一个正则表达式的例子
- 正则表达式的一个简单例子
- 一个简单的java正则表达式例子
- 正则表达式匹配的一个例子
- java正则表达式的一个例子
- 一个java正则表达式的小例子
- 学习ruby 的正则表达式
- Ruby 正则表达式的解析
- ruby 正则表达式的含义
- 正则表达式的例子
- Java 小例子:一个测试正则表达式的工具
- Java 小例子:一个测试正则表达式的工具
- Java中正则表达式的一个简单例子
- javascript正则表达式:非捕获分组的一个使用例子
- 给新手一个python正则表达式的入门例子
- [360] 《如何保持电力接触网与受电弓亲密接触》
- 一位ACMer过来人的心得
- Get translation and rotation matrix of an object
- 黑马程序员---Objective-C Foundation框架学习笔记之二
- IOS开发—block对外部变量的内存管理
- Ruby正则表达式的一个例子
- windows下DNS手动修改无效
- 动态规划之深入灵魂的解读(非常好)
- 十款最出色的PHP安全开发库中文详细介绍
- linux如何关闭selinux
- DataColumn.Expression 语法
- 【黑马程序员】-01c语言基础知识(变量和scanf)
- dp(UVa - 10626 Buying Coke)
- (总结)Linux的chattr与lsattr命令详解