ruby正则表达式总结

Ruby正则表达式实战练习 本文包含多个Ruby正则表达式练习题,涵盖字符串匹配、替换、提取、分割等常见操作。内容包括grep、gsub、正则表达式构建、贪婪与非贪婪匹配、单词边界处理、行首行尾匹配、数字提取与判断等核心知识点。每道题均提供输入输出示例及参考解决方案,适合Ruby开发者提升正则表达式实战能力。 阅读详情

本博主要做速查表用,详细资料可参考:http://www.ruby-doc.org/core-2.0/Regexp.html


一、正则表达式的表示方法

  1. 用两个'/'即/.../表示,例:/http:\/\/www\.example\.org/
  2. 用%r{}表示,例:%r{\w+\.\w+}
  3. 用Regexp.new生成,例:r = Regexp.new 'hello\s*world'

二、特殊匹配规则

  • /./ - 匹配任何字符,除了新行
  • /^/ - 行首
  • /$/ - 行尾
  • /\d/ - 匹配数字,等价[0-9]
  • /\w/ - 匹配字母、数字、'_',等价[a-zA-Z0-9_]
  • /\h/ - 匹配十六进制字符,等价[0-9a-fA-F]
  • /\s/ - 匹配空格、'\t'、'\r'、'\n',等价[ \t\r\n\f]

        以上规则的大写形式/\D/、/\W/、/\S/、/\H/表示相应的否定形式

  • * - 匹配0个以上
  • + - 匹配1个以上
  • ? - 匹配0个或1个
  • {n} - 匹配n个
  • {n,} - 匹配n个或以上
  • {,m} - 匹配m个或以下
  • {n,m} - 匹配n到m个,含n、m

        注意ruby的正则表达式默认是贪婪匹配的,如果要尽量少的匹配可在原表达式后加'?',如/\w+?_/匹配"abc_def_"结果是"abc_"而不是"abc_def_"

  • /.../m - 使换行符可被'.'匹配,多行匹配
  • /.../i - 忽略大小写
  • /.../x - 忽略空格和正则表达式中的注释
  • /.../o - 只执行一次#{}
  • /.../u - 匹配UTF-8
  • /.../e - 匹配EUC-JP,日本人写的没办法,羡慕啊
  • /.../s - 匹配Windows-31J
  • /.../n - 匹配ASCII-8BIT


三、正则表达式操作

1、匹配

  • =~ - 肯定匹配,返回第一个匹配的位置(从0开始),匹配失败返回nil,例:/hello/ =~ 'hello world' #=> 0
  • !~ - 否定匹配,不能匹配返回true,匹配成功返回false,例:/hello/ =~ 'hello world' #=> false
  • match - 返回MatchData类型,失败则返回nil,用法类似数组,例:m = /\d+-(\d+)/.match '123-45678' # m[0] == '123-45678', m[1] == '45678'
2、替换
  • str.sub(/.../, '...') - 替换一次,例:puts "hello world".sub(/world/, 'ruby') #=> hello ruby
  • str.gsub(/.../, '...') - 全局替换,例:puts "hello world".gsub(/\w/, '*') #=> ***** *****
        在sub和gsub后加'!'可以修改原有字符串,否则只是返回一个新的字符串

3、匹配所有

        str.scan(/.../) { |item| ... },扫描匹配所有,item可以使用[]操作选取子匹配


YOLOv8n行人检测实战:从数据集准备到模型训练 本文详细介绍了使用YOLOv8n进行行人检测的完整流程。首先阐述了YOLOv8的优势:高速推理(300+FPS)、更高精度、易用性和轻量化(仅6MB)。接着通过Docker搭建GPU训练环境,配置32GB共享内存避免数据加载问题,并安装必要的框架和OpenCV组件。数据集采用COCO2017标注格式,包含归一化坐标的YOLO标签文件。通过可视化脚本验证标注准确性后,提出多数据集融合训练策略以增强模型泛化能力。最后使用Ultralytics框架启动训练,展现了从环境搭建到模型训练的完整技术路径。该方案兼顾检测 阅读详情

相关推荐

AI算力瓶颈与系统优化实战指南

AI算力瓶颈已成为制约人工智能发展的关键因素,特别是在处理transformer类模型时,传统的冯·诺依曼架构面临严重的'内存墙'问题。通过硬件加速、系统优化和算法改进的三级策略,可以有效提升资源利用率。在嵌入式AI领域,结合量化、剪枝和专用指令集扩展等技术,能在资源受限设备上实现高效推理。这些优化方法在自动驾驶、工业视觉等场景中已展现出显著价值,推动AI应用从云端向边缘迁移。随着AI算力需求的持续增长,掌握系统优化技能将成为开发者的核心竞争力。

weixin_32597009的博客 306

ruby 正则表达式详解及示例代码

在编写puppet的pp文件中,会用到很多ruby正则表达式,常用的正则如下: 正则表达式: [codesyntax lang=”ruby”] {}: 重复次数(如 {4}表示前面的会重复出现恰好4次) {m,n}: 前面元素最少出现m次,最多出现n次 []: 范围描述符(如 [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: 非数字字符 *: 前面元素出现0次或多次 +: 前面元素出现1次或多次

ruby正则表达式规则

ruby正则表达式规则 ruby中经常用到的正则表达式使用方法

Ruby 正则表达式(介绍+语法+模式+实例+....++强烈推荐!!)

Ruby 正则表达式 1. 简介 正则表达式是一种特殊序列的字符,它通过使用有专门语法的模式来匹配或查找字符串集合,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。 2. 语法 正则表达式从字面上看是一种介于斜杠之间或介于跟在 %r 后的任意分隔符之间的模式,如下所示: /pattern/ /pattern/...

Yummy的博客 2582

ruby中的正则表达式_Ruby中的正则表达式

ruby中的正则表达式 Ruby正则表达式 (Ruby regular expressions) Regular expressions are a series of characters which are used to define the pattern to carry out a specific search. It can also be termed as a kind of ...

cumubi7552的博客 543

ruby正则表达式

概括、ruby提供内建的正则表达式支持,正则表达式是字符串处理的屠龙,正则表达式使我们只需要描述 字符串,而具体的处理就交给正则引擎就可以了。   正则表达式由元字符,转义字符、POSIX字符及普通字符组成。 元字符 在ruby正则表达式中,有些字符表示特殊的意义,他们表示字符的种类,位置,数量等等信息,它们是 . , | , ( ) , [ ] ...

eroshn 233

Ruby 正则表达式

练手:   # \d   # 数字。即[0-9]   puts "aaa0" =~ /\d/  # 3 匹配数字   puts /\d/ =~ "abc2"  # 3   puts "kkmm1" =~ /\d/ # 4 匹配数字   # [\u{4e00}-\u{9fff}]   # 中文   puts "abcdef我熬啊" =~ /[\u{4e00}-\u{9fff}]/

Men-DD 1万+

一步一步学Ruby(九):Ruby正则表达式(上)

先推荐一个在线的Ruby正则表达式编辑器http://www.rubular.com/ Ruby正则表达式以"//"作为构造方法。表达式返回一个RegExp的对象。   一般规则:   /a/匹配字符a。      /\?/匹配特殊字符?。特殊字符包括^, $, ? , ., /, \, [, ], {, }, (, ), +, *.      .匹配任意字符,例如/a./匹配ab...

上善若水 303

Ruby正则表达式

下面是本人翻译的一小段,贴在网上请大家指教 Ruby正则表达式 这个是我昨天看Porgramming ruby的时候看到的一小段,今天把它翻译出来。水平有限,呵呵 正则表达式是用一个字符串匹配特定模式的字符的一种简单的方法。你通过写式子在两个”/”之间创建了一个正则,通过ruby解析,正则表达式就作为一个对象被操作啦。 例如:你要用正则写一个式子,匹配的字符串含有Perl或者Python。

全技术调调 1384

Ruby语言的正则表达式

正则表达式是字符串处理中的强大工具,Ruby语言对正则表达式的支持使得文本处理工作变得简单而高效。通过灵活运用Ruby中的正则表达式功能,开发者可以轻松完成模式匹配、文本替换等多种任务。在学习和使用正则表达式的过程中,理解其基本语法与用法、掌握常用方法、优化性能都是提高工作效率的重要一环。希望本文可以帮助读者更好地在Ruby中使用正则表达式,并激励大家深入探讨这一神秘而迷人的工具。

2501_90425665的博客 462

ruby中的正则表达式_Ruby中的正则表达式非常基础

ruby中的正则表达式If you’re new to Ruby (or any programming language), you may have come across these strange bits of coding when you search stack overflow for answers to life’s greatest questions — like how...

weixin_26720549的博客 553

ruby 正则表达式

<br />2.5 正则表达式<br /> Regular Expressions<br /> 程 序员对很多Ruby 内建的类型是熟悉的,大多数语言都有字符串、整数、浮点和数组等等类型。但是正则表达式的内建支持通常只限于脚本语言如 Ruby ,Perl和awk等。这是一个耻辱:尽管正则表达式很神秘,但它是一个强大的文本处理工具。通过内建而不是通过程序库接口来支持它,有很大的不 同。<br /> 有很多书通篇都是介绍正则表达式的(例如《精通正则表达式》Mastering Reg

思想的苇草 1744

ruby回车换行符

利用ruby操作svn的权限文件,开始换行符号使用的是“\r\n”, 在十六进制下看到的是“\0D\0D\0A”; 后来换行符号改为 “\n”,   在十六进制下为“\OD\OA”.   后来网上有人说, 写二进制文件,写 'OA '(换行)的时候,会自动加个 'OD '(回车)在前面, 所以就不用再加\r了。   特在此记录一下。

北国的雨 2897

ruby: 基本数据类型与语法

原:http://ruby-cn.com/forum.php?mod=viewthread&tid=114 Ruby语言学习系列--基本的ruby语法  1.     基本的ruby语法 1.1      变量、常量和类型 1)      定义变量 变量类型 描述 示例 局部变量(或伪变量)

hzraymond的专栏 1490

Ruby学习笔记-正则表达式

  1.创建正则表达式 a)  reg1 = /^[a-z]*$/                             #将模式的定义放在两个正斜杠之间,返回一个Regexp对象 b)  reg2 = Regexp.new(‘^[a-z]*$’)         #创建一个Regexp对象 c)  reg3 = %r{^[a-z]*$}                       #使...

weixin_34332905的博客 242

Ruby中如何高效地进行字符串处理和正则表达式匹配?有哪些技巧?

综上所述,高效地进行字符串处理和正则表达式匹配需要综合考虑多个方面,包括减少不必要的操作、预编译正则表达式、合理使用选项、优化复杂的表达式以及利用专门的工具和类库。在Ruby中,字符串是不可变的,这意味着每次你对字符串进行修改(如拼接、替换等),实际上都会创建一个新的字符串对象。Ruby中的正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找和替换文本中的特定模式。它提供了一个扫描器,允许你按顺序查找和匹配字符串中的模式,而无需编写复杂的嵌套循环或正则表达式

ElvaRaleign的博客 1203

微信小程序源码5-智能AI聊天(前端+后端+后台管理页面)

微信小程序源码5-智能AI聊天(前端+后端+后台管理页面)学习智能AI聊天很好的源码

上一篇: “getaddrinfo failed: 在数据库查找中出现一个不可恢复的错误”的解决方法
下一篇: 如何用Javascript识别IE6
犹他茶壶
博客等级 码龄17年 0粉丝 4原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值