gsub和sub使用
常用的使用方式省略,不再描述
如果第二个参数是hash,那么匹配到的串被替换的时候,将从hash里找对应的键,如果有,则替换为键对应的值,如果没有则替换为空字符串
"fofa is best".gsub(/best/, 'a' => '1') 返回 fofa is
"fofa is best".gsub(/best/, 'best' => 'good') 返回 fofa is good
以上两种使用方式没有意义,因为完全可以把第二个参数用字符串替换,更方便,如下更有意义
"fofa is best".gsub(/[best]/, 'b' => '1', "e" => '2', "s" => 3, "t" => "4") 返回 "fofa i3 1234"
块: 匹配的内容,将被传入块中作为参数,经过运算,返回被替换的内容
"fofa is best".sub("best"){|str| str+" and good"} 返回 fofa is best and good,这个等同于如下
使用\1和\2表示匹配正则里的子串,\1表示第一个子串,\2表示第二个子串,这里需要注意的是使用\1和\2这种需要用单引号,别用双引号,双引号会转为字符,如"\101"就是8进制的65,就是A字符, 如果非要使用双引号,由于转义的原因,可以这样使用"\\1"等同于'\1'
上面的示例可以用另一种方式实现,如下
"fofa is best".sub(/(best)/, '\1 and good') 返回 fofa is best and good
基于以上内容,那么"fofa is best".sub(/best/, '\1 and good')会返回 fofa is and good,因为\1没有匹配的子串,所以这里会是空
接下来是最重要的\+,经过测试这个代表最后一个匹配的子串,如下
"fofa is best".gsub(/(fofa) is (best)/, '*\+*') 返回 *best*
"fofa is best".sub(/best/, '\+') 返回 fofa is ,\+没有对应的匹配的子串,所以是空
问题:"a + b".gsub('+', "\\" + '+') 返回什么?
上面的表达式等于"a + b".gsub('+', "\\+") 等于 "a + b".gsub('+', '\+'),此时匹配的串里没有子串,\+就是空字符串,所以加号会被替换为空字符串,结果是a b
总结:
\& 和 \0: 表示匹配的整个正则的内容
\1 : 第一个子串
\2:第二个子串
\+: 最后一个子串
\\: 1个反斜杠
常用的使用方式省略,不再描述
如果第二个参数是hash,那么匹配到的串被替换的时候,将从hash里找对应的键,如果有,则替换为键对应的值,如果没有则替换为空字符串
"fofa is best".gsub(/best/, 'a' => '1') 返回 fofa is
"fofa is best".gsub(/best/, 'best' => 'good') 返回 fofa is good
以上两种使用方式没有意义,因为完全可以把第二个参数用字符串替换,更方便,如下更有意义
"fofa is best".gsub(/[best]/, 'b' => '1', "e" => '2', "s" => 3, "t" => "4") 返回 "fofa i3 1234"
块: 匹配的内容,将被传入块中作为参数,经过运算,返回被替换的内容
"fofa is best".sub("best"){|str| str+" and good"} 返回 fofa is best and good,这个等同于如下
使用\1和\2表示匹配正则里的子串,\1表示第一个子串,\2表示第二个子串,这里需要注意的是使用\1和\2这种需要用单引号,别用双引号,双引号会转为字符,如"\101"就是8进制的65,就是A字符, 如果非要使用双引号,由于转义的原因,可以这样使用"\\1"等同于'\1'
上面的示例可以用另一种方式实现,如下
"fofa is best".sub(/(best)/, '\1 and good') 返回 fofa is best and good
基于以上内容,那么"fofa is best".sub(/best/, '\1 and good')会返回 fofa is and good,因为\1没有匹配的子串,所以这里会是空
接下来是最重要的\+,经过测试这个代表最后一个匹配的子串,如下
"fofa is best".gsub(/(fofa) is (best)/, '*\+*') 返回 *best*
"fofa is best".sub(/best/, '\+') 返回 fofa is ,\+没有对应的匹配的子串,所以是空
问题:"a + b".gsub('+', "\\" + '+') 返回什么?
上面的表达式等于"a + b".gsub('+', "\\+") 等于 "a + b".gsub('+', '\+'),此时匹配的串里没有子串,\+就是空字符串,所以加号会被替换为空字符串,结果是a b
总结:
\& 和 \0: 表示匹配的整个正则的内容
\1 : 第一个子串
\2:第二个子串
\+: 最后一个子串
\\: 1个反斜杠
发表评论
-
ruby面试
2020-05-10 09:24 359Block、Proc 与 Lambda的区别: https: ... -
rails console 记录命令历史
2020-03-20 10:53 3421: 打开文件: vim ~/.irbrc,添加如下内容: ... -
mysql dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
2019-12-16 16:43 424今天一连串的神操作导致连接mysql一直报错,dyld: Li ... -
rails离线环境搭建相关命令
2018-12-17 09:35 4451:下载yum包: 环境搭建需要安装很多包,可以使用 yumd ... -
rails离线环境搭建相关命令
2018-12-17 09:35 4651:下载yum包: 环境搭建需要安装很多包,可以使用 yumd ... -
rails5 belongs_to 默认不能为空,报错must exist
2017-04-29 16:37 4781: 在config/application.rb设置 con ... -
随笔知识
2014-08-07 21:11 1832show-source: 查看方法在文件中的位置,show-s ... -
rails 中 group 按照一定的规则返回数据
2012-11-03 19:20 966has_many :user_resumes, class_n ... -
项目 经验
2012-10-10 15:53 01: user = User.first; user. ... -
数组使用will_paginate
2012-03-30 11:58 1434有的时候,在开发的过程中需要对模型数组进行分页,此时我们可以如 ... -
我的rails 编程规范
2012-01-16 15:19 8851: 属性中时间要已at结尾,例如created_at, ... -
html_safe
2012-01-12 13:56 1432html_safe: 可以保证(> < &am ... -
同时分页查找没有关联关系的多个表
2011-12-30 14:41 1286supplyinfos和seekinginfos两个表 需求: ... -
send_file ie下文件名乱码问题解决
2011-10-28 17:50 2468使用rails的send_file 实现下载功能时,type指 ... -
counter_cache的使用
2011-10-08 11:55 2732有点惭愧,做rails也2年了,竟然不会用co ... -
has_many 关联关系表单 提交
2011-04-18 17:16 1154class Author has_many :books ... -
belongs_to 多级关联关系
2011-04-12 14:18 1128有一种情况,是这样的c属于b,b属于a,但是我们有时候想建立c ... -
rails 根据异常显示特定的错误页面
2011-03-27 20:50 1174rescue_from 异常, :with => :a ... -
rails 笔记
2011-03-27 20:49 1741启动项目: ruby script/se ... -
rails 发送电子邮件(ActionMailer)
2011-03-27 20:49 36331: 复制以下配置邮件 ...
相关推荐
2. String:处理文本字符串的类,提供了丰富的字符串操作方法,如`concat`拼接字符串,`sub`和`gsub`进行正则表达式的替换,`strip`去除首尾空白。 3. Array:表示有序元素集合的数据结构,支持索引访问和迭代,有`...
正则表达式在Ruby on Rails中用于模式匹配和文本处理,以下是一些常用的正则表达式符号: - `^`: 表示字符串的开始。 - `$`: 表示字符串的结束。 - `.`: 匹配任何单个字符。 - `(a|b)`: 表示a或b。 - `()`: 表示一个...
例如,`+` 运算符用于连接两个字符串,`sub` 和 `gsub` 用于正则表达式替换。 4. **Regexp**:正则表达式在 Ruby 中非常强大,支持多种匹配模式和捕获组。`match`, `=~` 和 `/pattern/` 是常用的正则表达式操作。 ...
在《Ruby基础教程(第四版)》的第16章中,作者bluetea详细介绍了Ruby语言中正则表达式的使用方法。本章节主要围绕正则表达式的创建、基本匹配规则、元字符的使用及其高级特性等方面展开。 #### 正则表达式的对象...
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,字母和数字)和特殊字符(称为"元字符"),用于描述或匹配一组字符串,具备非常强大的文本搜索、替换和处理功能。 在Ruby中使用正则表达式是...
本文详细介绍了Ruby中正则表达式的匹配和替换操作,包括基本的匹配方法如`=~`, `match`, `scan`,以及如何使用分组和特殊全局变量。这些知识可以帮助开发者更高效地处理文本数据,实现各种复杂的文本处理任务。希望...
Ruby为字符串提供了几个专门使用正则表达式的方法,其中最常用的是sub和gsub方法。这两个方法都用于替换字符串中符合正则表达式的部分。区别在于sub方法只替换第一次匹配的结果,而gsub方法替换所有匹配的结果。这两...
此外,Ruby的sub/gsub方法不仅支持字符串替换,还支持哈希和代码块形式的语法,这为复杂条件下的替换操作提供了便利。 6. 正则表达式与字符串字面量的区别 如果只是需要查找字符串中的某个字面量,建议直接使用字符...
最后,"迭代器,代码块,闭包"这部分内容可能讲解了Ruby中如何使用代码块(blocks)来实现迭代和闭包的概念。代码块是Ruby中的一种特性,它可以捕获其所在作用域的变量,并在其他地方使用,这就是闭包。在处理正则...
`sub` 和 `gsub` 是最常见的,分别用于替换字符串中第一个和所有匹配的部分。它们的变体 `sub!` 和 `gsub!` 直接修改原始字符串,而 `sub` 和 `gsub` 返回一个新的字符串,保持原始字符串不变。 例如,在以下示例中...
Ruby正则表达式的强大之处还在于它提供了丰富的内置方法来处理字符串,如match、scan、sub、gsub等。这些方法允许程序员以非常灵活和强大的方式对字符串进行搜索和修改。 在编写正则表达式时,需要特别注意特殊字符...
`, `sub`, `gsub`等都支持正则表达式。 10. Ruby Gem生态系统: Ruby的Gem是预打包的代码库,用于扩展Ruby的功能。开发者可以通过Gemfile和Bundler管理依赖关系,方便地构建和分发项目。 在"学习Ruby"的过程中,...
在IT领域,子域是网络域名系统(DNS)中的一个重要概念,它位于主域名之下,用于组织和分配网站的不同部分。...在实际操作中,了解和使用`Gsub`需要对网络原理、DNS系统以及相关的编程技术有一定的理解。
- 其他方法包括`upcase`(大写)、`capitalize`(首字母大写)、`strip`(去除两侧空白)、`chop`(去除末尾字符)、`sub`(替换第一个匹配项)、`gsub`(全局替换)等。 7. **字符串解压**: - `String#unpack`方法用于将...
3. **String类**:Ruby的字符串处理非常强大,String类提供了诸如`concat`, `sub`, `gsub`等方法,用于字符串连接、替换和查找等操作。 4. **Hash类**:Ruby的哈希(Hash)类似于其他语言中的字典或关联数组,它...
4. **内容替换**:如果找到匹配的模式,脚本会使用`sub`或`gsub`方法进行替换。`sub`替换第一次出现的匹配项,而`gsub`替换所有匹配项。 5. **写入文件**:替换后的新内容需要被写回文件。这可以通过创建一个新的...
对于字符串的解析,我们经常使用内置的方法如`split`来根据特定分隔符切割字符串,`gsub`和`sub`用于替换匹配的子串。此外,正则表达式(Regexp)是Ruby中强大的文本匹配工具,它允许我们精确地匹配和提取复杂模式的...
- 定义:正则表达式是由字符和特殊符号组成的模式,用于描述一系列的字符串。 - 匹配模式:例如,`\d`表示数字,`.`表示任何单个字符,`*`表示前一个元素出现零次或多次。 2. Ruby中的正则表达式 - 创建:在Ruby...
- 字符串方法:Ruby的字符串对象有很多内建方法,如`split`用于分割字符串,`strip`去除两端空白,`sub`或`gsub`用于替换子串。 4. **与记事本结合的实际应用**: - 生成配置文件:Ruby可以用来生成或修改配置...
5. 字符串处理:LeetCode中有大量关于字符串操作的题目,Ruby的String类提供了丰富的操作方法,如sub、gsub、split等,方便处理字符串问题。 6. 树结构问题:Ruby的Tree类可以方便地表示和操作树结构,例如二叉树的...