Ruby正则浅谈

      说起Ruby当然要提起他的正则表达式机制,正则表达式作为一个强大的匹配语言已经越来越多的使用到不同的领域当中,从字符串验证,匹配,到网页抽取等。虽然有些人诟病与正则表达式的匹配效率,但是考虑到正则的强大匹配能力也就无所谓了。

      这里就不详细介绍正则表达式的语法了,该语法在百度,google之类的搜索中一搜一大堆。

      说起ruby的正则不就不能不说起ruby的=~和match两种匹配方式,我们还是用实例来说明一下这两种匹配方式的区别吧。

      先来说一说=~的用法吧

 

 message = "afhadhffkdf414j"
 regex=/[a-z](\d{3})[a-z]/
 puts regex=~message

 

      在ruby当中是用//来表示正则匹配语句的。大家可以运行一下,上面的语句是匹配三个数字两边都是小写字母的一个字符串。我们运行上面代码,将会出现结果10.你一定很奇怪,为什么会出现10这个结果,这就是=~的魅力,他是将匹配结果的首次出现位置打印出来。

     那下面我们来看看match吧

 

    message = "afhadhffkdf414j"
    regex=/[a-z](\d{3})[a-z]/
    puts regex.match(message)

    我们来看看输出结果吧:f414j。该字符串表示的正则语句匹配的所有符合规则的结果集。不知道大家注意到没,我们在正则里面用到了括号,我们希望抽取出三个数字就可以了。当然这也很简单,我们只需要在上面的代码当中稍作修改即可

 message = "afhadhffkdf414j"
 regex=/[a-z](\d{3})[a-z]/
 regex.match(message)
 puts $1

   结果自然是414.为什么要使用$1而不是$0呢,我们看看$0的结果吧C:/Users/Administrator/Documents/NetBeansProjects/RubyApplication1/lib/regex.rb它是输出的该对象信息。

   下面又出现了一个新的情况,假设一个字符串当中有很多符合规则的信息怎么办呢。上面的语句只能匹配出最先找到的结果,而我们需要把所有的结果都打印出来怎么办呢?刚开始我受java的影响,认为match的结果会是一个集合,所以怎么考虑也没有整出来。后来发现有一个scan方法。代码如下图所示

    message = "afhadhffkdf414j9tr3j43i3433094jwoert223jwew123dfdf"
    regex=/[a-z](\d{3})[a-z]/
    message.scan(regex).each { |m|  puts "The result is #{m[0]}" }

 很简单,结果就是

The result is 414
The result is 223
The result is 123 
怎么样,很方便吧。很简单的就把所有的匹配结果都抽取出来了。好了,下班了。回家吃饭了
 

 


 


 

OdomLaserCalibraTool标定工具的使用及踩坑记录 首先欢迎扫码关注我的微信公众号【SLAM及ROS学习笔记】 GitHub地址 GitHub - tzhangZJU/OdomLaserCalibraTool: Extrinsic Calibration of a Odom and 2d Laser 作者博客 2d Laser 和 Odomter 内外参数标定工具原理及使用方法_知行合一-优快云博客 其实只是记录了一下我自己的标定过程,和错误解决方法。其实博客和GitHub中也有提及 Error1 这个是由于. 阅读详情

相关推荐

Faster Planner——Kinodynamic Astar详解

实际成本和启发式成本 实际成本 Actual Cost   每条轨迹的真实代价函数定义如下: J(T)=∫0T∥u(t)∥2dt+ρT \mathcal{J}(T)=\int_{0}^{T}\|\mathbf{u}(t)\|^{2} d t+\rho T J(T)=∫0T​∥u(t)∥2dt+ρT 离散形式下: 启发成本 Heuristic Cost pμ∗(t)=16αμt3+12βμt2+vμc+pμc=pμc+vμc+T2∗((2∗vμc−2∗vμg)/(2∗T)−(6∗pμc−6∗pμg+6∗T∗v

漫长IT路 4834

Ruby正则表达式修饰符及模式浅谈

就像字符串通过 %Q 进行分隔一样,Ruby 允许您以 %r 作为正则表达式的开头,后面跟着任意分隔符。这在描述包含大量您不想转义的斜杠字符时非常有用。除了控制字符,(+?正则表达式从字面上看可能包含一个可选的修饰符,用于控制各方面的匹配。修饰符在第二个斜杠字符后指定,如上面实例所示。正则表达式用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找字符串集合。

xiaoweids的博客 156

H3C设备VRF配置实战:5步搞定多业务网络隔离(附排错技巧)

本文详细介绍了在H3C设备上配置VRF(虚拟路由转发)实现多业务网络隔离的实战方法。通过五步配置流程,从创建VPN-instance、绑定接口到配置独立路由表,帮助网络工程师在单台设备上构建逻辑隔离的企业级网络,并分享了高级路由配置与常见排错技巧。

gold8的专栏 937

关于ruby中 %W{}和%w{}的使用案例浅谈

%s{String} 生成一个符号对象 %r{String} 创建一个正则表达式字面值 %x{String} 执行String所代表的命令 %{String} 创建一个使用双引号括起来的字符串 %Q{String} 创建一个使用双引号括起来的字符串 %q{String} 创建一个使用单引号括起来的字符串

xinyuerr的博客 219

MTK平台TP驱动设备树与GPIO配置实战解析

本文详细解析了MTK平台TP驱动开发中的设备树与GPIO配置实战。通过DCT工具配置GPIO引脚,结合设备树节点定义触摸参数,并分享驱动移植、编译调试技巧及常见问题解决方案,帮助开发者快速掌握MTK触摸驱动开发核心。

ice55的博客 233

Benchmark系列——基本概念和分类

本文主要介绍了Benchmark的基本概念和分类情况。

Bluetangos的博客 8436

Ruby编程语言浅谈

Ruby的语法受到了Perl、Smalltalk、Eiffel和Lisp等语言的影响,它具有清晰简洁的语法结构,使得编写代码更加直观和易于理解。它的设计目标是简单、灵活、易于阅读和编写,同时提供强大的面向对象编程功能。强大的标准库:Ruby拥有丰富的标准库,提供了许多常用的功能和工具,如文件操作、网络编程、正则表达式等。简洁优雅:Ruby的语法简洁而优雅,代码可读性强,使得开发人员可以更快速地编写高质量的代码。动态类型:Ruby是一种动态类型语言,变量的类型在运行时确定,这使得编写和调试代码更加灵活。

2301_78911996的博客 391

AI Agent Harness Engineering 监控与日志系统搭建

在生成式AI(Generative AI)与大语言模型(LLM)普及的今天,AI Agent(自主智能代理)已经成为了继「LLM API调用」「单轮/多轮对话」之后的第三代AI应用范式——Agent能够自主感知环境、制定多步决策、调用外部工具(Web搜索、数据库、RAG检索、企业系统API等)、执行复杂任务并优化自身策略。然而,随着Agent应用从Demo原型快速落地到企业生产环境,一系列与工程化落地强绑定的可观测性(Observability)问题正在成为Agent项目成功上线、稳定运行的最大瓶颈。

AI开发架构师 184

黑客用python还是ruby-请问为什么我选择了Ruby而不是Python?

笔者认为有以下几个方面:一、 RoR的推波助澜笔者认为,Ruby的成功,很大一部分是由于RoR的带动。几年前,如果你没听过RoR倒是情有可原,但如果今天,RoR对你来说,还是一个陌生词汇的话,那你就有点危险了。:)什么是RoR呢?全称,Ruby on Rails,简称,RoR或者Rails。它是个全栈的(full-stack)web应用框架,它为开发者提供了构建一个web应用所需的完整基础结构,并...

weixin_37988176的博客 723

Codex入门00-初识神器(小白入门:到底什么是Codex CLI,和ChatGPT写代码有什么不同?)

OpenAI Codex CLI 是 OpenAI 于2025年推出的终端原生AI编程代理,不是在网页里聊天写代码,而是直接在你的终端里自主读代码、改文件、跑命令。它拥有三种安全模式、/goal 持久化任务、云端沙箱执行等独特能力。本文从零介绍 Codex CLI 的核心概念、与 ChatGPT 写代码的本质区别、典型使用场景和费用说明,让你全面认识这个改变开发方式的神器。

yueyeguzhuo的专栏 302

2026年【江苏“信息与未来”编程思维】真题及题解(T6:桌面游戏)

2026年【江苏“信息与未来”编程思维】真题及题解(T6:桌面游戏)

王老师青少年编程 534

我的编程回顾 —— 浅谈怎么快速学习一门新的编程语言

我从2002年到现在,学习了好几种编程语言。有一些,早已不用并且忘光了,有一些尽管不用但还会惦记着,还有一些,朝九晚五地用着。   我回顾过去9年的学习经历,差不多每年会学习一门新的语言,现在把它记录如下:   语言 学习时间 状况 C 2002 学习时候在TC上编了一些玩具程序,还曾记得,迁移到VC的时候,找不到g

smqh2011的专栏 1067

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

浅谈 ACSII,Unicode 和 UTF-8

浅谈 ACSII,Unicode 和 UTF-8,和它们的转换规则

FortyTo 随笔 412

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

在linux中安装字体大小,在linux中安装字体

ASP.NET MVC——URL路由在MVC之前,ASP.NET假设请求的URL与服务器上的文件之间有关联,服务器接受请求,并输出相应的文件.而在引入MVC后,请求是由控制器的动作方法来处理的.为了处理URL,便引入了路由系统. 首先我 ...【POJ 2942】Knights of the Round Table(点双连通分量,二分图染色)圆桌会议必须满足:奇数个人参与,相...

weixin_30652105的博客 149

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

浅谈C语言的字符串拆分

字符串拆分应用在很多方面,尤其是针对格式化数据的处理,可是不同程序语言对于字符串拆分却有着很大的区别(易用性,效率等方面考虑)。 对于格式化数据的处理首先想到的利器就是awk了,它尤其胜任文本的处理,逐行读取文本文件,按照指定的分隔符处理拆分的字符串,它还能为文本处理加入控制运算逻辑,功能强大到已经是一门复杂的编程语言了。 还有就是以强大的正则匹配为基础的perl,对于字符串处理也是很强大。可

时间是把杀刀猪 7176

浅谈mongoDB以及Docker安装和配置用户权限

一、简介 MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热 门 的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最 像关 系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以 存 储比较复杂的数据类型。 二、特点 MongoDB 最大的特点是他支持的查询语言非常...

飘蓝 867

c语言中的字符串如何拆分,浅谈C语言的字符串拆分

字符串拆分应用在很多方面,尤其是针对格式化数据的处理,可是不同程序语言对于字符串拆分却有着很大的区别(易用性,效率等方面考虑)。对于格式化数据的处理首先想到的利器就是awk了,它尤其胜任文本的处理,逐行读取文本文件,按照指定的分隔符处理拆分的字符串,它还能为文本处理加入控制运算逻辑,功能强大到已经是一门复杂的编程语言了。还有就是以强大的正则匹配为基础的perl,对于字符串处理也是很强大。可是对C语...

weixin_42389766的博客 4347

浅谈程序员从初级到中级10个秘诀

转载自品略图书馆http://www.pinlue.com/article/2020/05/1422/0610515954918.html 导读:学习另一门语言其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的语言则更佳。 ... 1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的语言则更佳。打.

yihuliunian的博客 431

linux perl开发工具,浅谈Perl开发工具

Perl开发工具大比拼◆ Komodo IDEKomodo IDE可以在 Windows、Mac OS X 和 Linux 上运行,并支持通用的开源语言 —— Perl、PHP 和 Ruby。代码智能引擎非常可靠。它扫描所有语言安装找到定制扩展,比如 PEAR 模块。在项目方面,它支持与 CVS、Subversion 和 Perforce 的集成,也允许直接向服务器 FTP 传递代码。 Komod...

weixin_29026443的博客 452

程序员技术练级攻略-程序员技术浅谈

机器学习 看了机器学习觉得这个学科很牛。 http://baike.baidu.com/link?url=rvjvd0bl4e3rrahDrw8GLBawRhanQ4Sv6_2s8hp6-3SlhBH0HVLCgSHiaDLKvkfC__Q-iJc9tuwcDpYXCJUz3aEtBG3qRerbdqV318c3p5lLbdNggl6B9Pz_JUumAwt

thanklife的专栏 1846

vm linux设置共享文件夹在哪里,VM中的Linux如何设置共享文件夹

HDU 5869 Different GCD Subarray Query 离线+树状数组Different GCD Subarray Query Problem Description This is a simple problem. The teacher gives Bob a ...phpwind数据同步本地后登陆异常在讲数据同步到本地之后,发现输入用户名和密码之后...

weixin_28020031的博客 760

css不支持data image,CSS_CSS中使用image data URI来处理图片的方法,即将图片资源转换为 base64 字 - phpStudy...

CSS中使用image data URI来处理图片的方法即将图片资源转换为 base64 字符串格式嵌到页面或样式中。这样连图片的请求链接都省了。如:使用方式CSS Code复制内容到剪贴板/**数据格式**/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAABHNCSVQICAgIfAhkiAAAAAl...

weixin_35938424的博客 264

rails事务

rails事务 51CTO首页我的博客搜索社区:论坛博客下载读书更多登录注册李骥平http://fsjoy.blog.51cto.com【订阅】原创:160翻译:56转载:85博 客|图库|写博文|帮 助 首页|linux|ruby|ROR|敏捷开发|扯|桌...

129

收藏网站

2017/05/02 简书 自己总结的iOS、mac开源项目及库,持续更新。。。。//6-8 iOS 拍照或从相册选择图片后进行图片缩放与选取如何开发?有现成 iOS 控件吗?如果没有可否给段参考代码(类似于微信界面)? IOS图像处理之 coreImage. UIImage非正方形图片如何剪切为正方形 IOS中修改图片的大小:修改分辨率和裁剪 AutoLayout详解...

weixin_34283445的博客 304
上一篇: WSDL详细描述
下一篇: 快速排序
refactaar
博客等级 码龄17年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值