【Ruby on Rails全栈课程】2.5 正则表达式

简介: 1、正则表达式(Regexp)正则表达式是对字符串操作的公式,用来过滤字符串或者从字符串中匹配出我们需要的字符,在各类语言中都有应用

1、正则表达式(Regexp)


正则表达式是对字符串操作的公式,用来过滤字符串或者从字符串中匹配出我们需要的字符,在各类语言中都有应用


2、基础操作字符


介绍一下常用的几个字符,想要了解更多功能,可以看看百科中的介绍


image.png

3、类型转换

(1)字符串转换为正则表达式 Regexp.new(str1),可以将字符串str1转换成正则表达式,如果正则表达式里面有转义字符,需要在转义字符前面加反斜杠。


irb(main):001:0> str1 = "abc"
=> "abc"
irb(main):002:0> Regexp.new(str1)
#已经转成了正则表达式
=> /abc/
irb(main):003:0> "abcdef" =~ Regexp.new(str1)
#返回的不是nil,说明已经匹配上了
=> 0


4、正则表达式在ruby中的应用


(1)=~ 判断正则表达式是否匹配到字符串,匹配的话,返回字符串匹配字符的首个索引,否则返回nil


#定义一个匹配时间的正则表达式
irb(main):012:0> REG = /20\d{2}-?\d{2}-?\d{2}/
=> /20\d{2}-?\d{2}-?\d{2}/
#返回0,说明字符串从第一个字符开始匹配到正则表达式
irb(main):013:0> REG =~ "2018-09-08"
=> 0
#返回nil说明没有匹配上
irb(main):014:0> REG =~ "201-09-08"
=> nil

正则表达式解析:


这是一个匹配日期的正则表达式,我们分成两部分解释


第一部分:20\d{2}


\d{2}代表两个数字字符,总体代表20后面跟着两个数字字符,能匹配到"2018-09-08”字符串中的“2018”


第二部分:-?\d{2}


-?代表0个或者1个“-”字符,说明这个正则表达式能匹配"2018-09-08”,也能匹配“20180908”


(2)match 描述匹配的MatchData对象,如果没有匹配,则返回nil。经常与正则表达式字符中()搭配使用

#定义一个正则表达式
irb(main):018:0> REG1 = /20\d{2}-?\d{2}-?\d{2}/
=> /20\d{2}-?\d{2}-?\d{2}/
#返回一个MatchData对象,赋值到m变量中。MatchData对象可以看成一个数组。
#第一个值(索引为0)为整个正则表达式匹配到的字符串,第二个值(索引为1)为正则表达式第一个括号里面匹配到的值,以此类推。
irb(main):019:0> m = REG1.match("2018-09-08-07-06-05")
=> #<MatchData "2018-09-08">
#第一个值为/20\d{2}-?\d{2}-?\d{2}/匹配到的值
irb(main):020:0> m[0]
=> "2018-09-08"
#第二个值为正则表达式第一个括号里面匹配到的值,因为此正则表达式没有括号,所以第二个值为空
irb(main):021:0> m[1]
=> nil
#定义一个正则表达式,将20\d{2}部分用括号括起来
irb(main):023:0> REG2 = /(20\d{2})-?\d{2}-?\d{2}/
=> /(20\d{2})-?\d{2}-?\d{2}/
#返回一个MatchData对象
irb(main):024:0> m2 = REG2.match("2018-09-08")
=> #<MatchData "2018-09-08" 1:"2018">
#第一个值为/(20\d{2})-?\d{2}-?\d{2}/匹配到的值
irb(main):025:0> m2[0]
=> "2018-09-08"
#第二个值为20\d{2}括号里面的内容匹配到的值
irb(main):026:0> m2[1]
=> "2018"
irb(main):028:0> REG3 = /(20\d{2})-?(\d{2})-?(\d{2})/
=> /(20\d{2})-?(\d{2})-?(\d{2})/
#返回一个MatchData对象,m[0]为"2018-09-08",m[1]为"2018",m[2]为"09"
irb(main):029:0> m3 = REG3.match("2018-09-08")
=> #<MatchData "2018-09-08" 1:"2018" 2:"09" 3:"08">
irb(main):030:0> m3[0]
=> "2018-09-08"
irb(main):031:0> m3[1]
=> "2018"
irb(main):032:0> m3[2]
=> "09"


目录
相关文章
|
3月前
|
Ruby
探索深究Ruby 正则表达式
【8月更文挑战第30天】
28 1
|
3月前
|
前端开发 测试技术 数据库
使用Ruby on Rails进行快速Web开发的技术探索
【8月更文挑战第12天】Ruby on Rails以其高效、灵活和易于维护的特点,成为了快速Web开发领域的佼佼者。通过遵循Rails的约定和最佳实践,开发者可以更加专注于业务逻辑的实现,快速构建出高质量的Web应用。当然,正如任何技术框架一样,Rails也有其适用场景和局限性,开发者需要根据项目需求和个人偏好做出合适的选择。
|
3月前
|
开发者 Ruby
Ruby正则表达式的奥秘:如何用简单的语法构建强大的文本匹配与处理工具?
【8月更文挑战第31天】正则表达式是文本匹配的强大工具,通过简单模式即可实现复杂文本处理。作为动态、面向对象的语言,Ruby提供了全面的正则表达式支持,涵盖创建、匹配、替换及分割等功能。本文通过示例代码介绍如何在Ruby中使用正则表达式进行文本匹配,并分享了编写正则表达式的最佳实践,帮助开发者提升文本处理效率与准确性,更好地利用这一工具构建高效系统。
37 0
|
3月前
|
前端开发 测试技术 API
揭秘Ruby on Rails的神秘力量:如何让你的Web应用飞起来?
【8月更文挑战第31天】Ruby on Rails(简称RoR)是一个基于Ruby语言的开源Web应用框架,自2005年发布以来,因简洁的语法、强大的功能和高效的开发效率而广受好评。RoR采用MVC架构,提高代码可读性和可维护性,拥有庞大的社区和丰富的库支持。本文通过示例代码展示其强大之处,并介绍RoR的核心概念与最佳实践,帮助开发者更高效地构建Web应用。
43 0
|
3月前
|
前端开发 API C++
在Ruby世界中寻找你的Web框架灵魂伴侣:Rails vs Sinatra
【8月更文挑战第31天】在Ruby的世界里,选择Web框架如同挑选衣物,需根据场合和需求。Rails与Sinatra是两大热门框架,前者以其“约定优于配置”理念和全面的功能成为企业级应用的首选;后者则以轻量级和灵活性著称,适用于快速原型开发和小规模应用。通过对比两者特性,如Rails的MVC架构与Sinatra的简洁API,我们可以看到它们各有所长。选择合适的框架,如同找到旅途中的最佳伙伴,让开发之路更加顺畅愉悦。这场探索之旅教会我们,没有绝对的好坏,只有最适合的选择。
35 0
|
3月前
|
安全 前端开发 数据安全/隐私保护
如何在Ruby on Rails中打造坚不可摧的OAuth认证机制
【8月更文挑战第31天】在构建现代Web应用时,认证与授权至关重要。本文介绍如何在Ruby on Rails中实现OAuth认证,通过使用`omniauth`和`devise` gems简化流程。首先安装并配置相关gem,接着在`User`模型中处理OAuth回调,最后设置路由及控制器完成登录流程。借助OAuth,用户可使用第三方服务安全地进行身份验证,提升应用安全性与用户体验。随着OAuth标准的演进,这一机制将在Rails项目中得到更广泛应用。
48 0
|
4月前
|
SQL 安全 数据库
Ruby on Rails 数据库迁移操作深度解析
【7月更文挑战第19天】Rails 的数据库迁移功能是一个强大的工具,它帮助开发者以版本控制的方式管理数据库结构的变更。通过遵循最佳实践,并合理利用 Rails 提供的迁移命令和方法,我们可以更加高效、安全地管理数据库结构,确保应用的稳定性和可扩展性。
|
5月前
|
前端开发 测试技术 数据库
Ruby on Rails:快速开发Web应用的秘密
【6月更文挑战第9天】Ruby on Rails,一款基于Ruby的Web开发框架,以其高效、简洁和强大备受青睐。通过“约定优于配置”减少配置工作,内置丰富功能库加速开发,如路由、数据库访问。活跃的社区和海量资源提供支持,MVC架构与RESTful设计确保代码清晰可扩展。高效的数据库迁移和测试工具保证质量。Rails是快速构建Web应用的理想选择,未来将持续影响Web开发领域。
|
6月前
|
开发框架 安全 前端开发
使用Ruby on Rails进行快速Web开发
【5月更文挑战第27天】Ruby on Rails是一款基于Ruby的高效Web开发框架,以其快速开发、简洁优雅和强大的社区支持著称。遵循“约定优于配置”,Rails简化了开发流程,通过MVC架构保持代码清晰。安装Ruby和Rails后,可使用命令行工具创建项目、定义模型、控制器和视图,配置路由,并运行测试。借助Gem扩展功能,优化性能和确保安全性,Rails是快速构建高质量Web应用的理想选择。
|
6月前
|
监控 数据可视化 前端开发
使用Ruby on Rails构建的员工上网行为监控Web应用
我们开发了一款基于Ruby on Rails的员工上网行为监控Web应用,帮助企业保护数据安全和确保员工生产力。该应用利用Rails的MVC架构和Active Record管理数据库,通过网络代理和JavaScript追踪员工网络活动。数据收集后,应用进行分析和可视化,以便识别异常行为。此外,借助Rails的后台任务和Sidekiq gem,实现数据自动化处理和定时更新,为公司提供实时监控反馈。
320 2