`

ruby gsub和sub 的特殊使用

阅读更多
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个反斜杠
分享到:
评论

相关推荐

    ruby api

    2. String:处理文本字符串的类,提供了丰富的字符串操作方法,如`concat`拼接字符串,`sub`和`gsub`进行正则表达式的替换,`strip`去除首尾空白。 3. Array:表示有序元素集合的数据结构,支持索引访问和迭代,有`...

    Ruby on Rail 基础知识 一张纸

    正则表达式在Ruby on Rails中用于模式匹配和文本处理,以下是一些常用的正则表达式符号: - `^`: 表示字符串的开始。 - `$`: 表示字符串的结束。 - `.`: 匹配任何单个字符。 - `(a|b)`: 表示a或b。 - `()`: 表示一个...

    ruby_1_9_3_stdlib

    例如,`+` 运算符用于连接两个字符串,`sub` 和 `gsub` 用于正则表达式替换。 4. **Regexp**:正则表达式在 Ruby 中非常强大,支持多种匹配模式和捕获组。`match`, `=~` 和 `/pattern/` 是常用的正则表达式操作。 ...

    ruby基础教程(第四版)第16章 正则表达式1

    在《Ruby基础教程(第四版)》的第16章中,作者bluetea详细介绍了Ruby语言中正则表达式的使用方法。本章节主要围绕正则表达式的创建、基本匹配规则、元字符的使用及其高级特性等方面展开。 #### 正则表达式的对象...

    Ruby中使用正则表达式的基础指引

    正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,字母和数字)和特殊字符(称为"元字符"),用于描述或匹配一组字符串,具备非常强大的文本搜索、替换和处理功能。 在Ruby中使用正则表达式是...

    详解Ruby中正则表达式对字符串的匹配和替换操作

    本文详细介绍了Ruby中正则表达式的匹配和替换操作,包括基本的匹配方法如`=~`, `match`, `scan`,以及如何使用分组和特殊全局变量。这些知识可以帮助开发者更高效地处理文本数据,实现各种复杂的文本处理任务。希望...

    举例初步讲解Ruby中的正则表达式

    Ruby为字符串提供了几个专门使用正则表达式的方法,其中最常用的是sub和gsub方法。这两个方法都用于替换字符串中符合正则表达式的部分。区别在于sub方法只替换第一次匹配的结果,而gsub方法替换所有匹配的结果。这两...

    浅析Ruby中的正则表达式的使用

    此外,Ruby的sub/gsub方法不仅支持字符串替换,还支持哈希和代码块形式的语法,这为复杂条件下的替换操作提供了便利。 6. 正则表达式与字符串字面量的区别 如果只是需要查找字符串中的某个字面量,建议直接使用字符...

    10.28 yield正则表达式替换字符串

    最后,"迭代器,代码块,闭包"这部分内容可能讲解了Ruby中如何使用代码块(blocks)来实现迭代和闭包的概念。代码块是Ruby中的一种特性,它可以捕获其所在作用域的变量,并在其他地方使用,这就是闭包。在处理正则...

    详细介绍Ruby中的正则表达式

    `sub` 和 `gsub` 是最常见的,分别用于替换字符串中第一个和所有匹配的部分。它们的变体 `sub!` 和 `gsub!` 直接修改原始字符串,而 `sub` 和 `gsub` 返回一个新的字符串,保持原始字符串不变。 例如,在以下示例中...

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

    Ruby正则表达式的强大之处还在于它提供了丰富的内置方法来处理字符串,如match、scan、sub、gsub等。这些方法允许程序员以非常灵活和强大的方式对字符串进行搜索和修改。 在编写正则表达式时,需要特别注意特殊字符...

    learning_ruby

    `, `sub`, `gsub`等都支持正则表达式。 10. Ruby Gem生态系统: Ruby的Gem是预打包的代码库,用于扩展Ruby的功能。开发者可以通过Gemfile和Bundler管理依赖关系,方便地构建和分发项目。 在"学习Ruby"的过程中,...

    Gsub:一个获取子域的命令

    在IT领域,子域是网络域名系统(DNS)中的一个重要概念,它位于主域名之下,用于组织和分配网站的不同部分。...在实际操作中,了解和使用`Gsub`需要对网络原理、DNS系统以及相关的编程技术有一定的理解。

    Ruby中操作字符串的一些基本方法

    - 其他方法包括`upcase`(大写)、`capitalize`(首字母大写)、`strip`(去除两侧空白)、`chop`(去除末尾字符)、`sub`(替换第一个匹配项)、`gsub`(全局替换)等。 7. **字符串解压**: - `String#unpack`方法用于将...

    ruyb1.9.3标准库帮组文档

    3. **String类**:Ruby的字符串处理非常强大,String类提供了诸如`concat`, `sub`, `gsub`等方法,用于字符串连接、替换和查找等操作。 4. **Hash类**:Ruby的哈希(Hash)类似于其他语言中的字典或关联数组,它...

    多文件内容检索替换

    4. **内容替换**:如果找到匹配的模式,脚本会使用`sub`或`gsub`方法进行替换。`sub`替换第一次出现的匹配项,而`gsub`替换所有匹配项。 5. **写入文件**:替换后的新内容需要被写回文件。这可以通过创建一个新的...

    488解析课

    对于字符串的解析,我们经常使用内置的方法如`split`来根据特定分隔符切割字符串,`gsub`和`sub`用于替换匹配的子串。此外,正则表达式(Regexp)是Ruby中强大的文本匹配工具,它允许我们精确地匹配和提取复杂模式的...

    LFA-ep02-Regex

    - 定义:正则表达式是由字符和特殊符号组成的模式,用于描述一系列的字符串。 - 匹配模式:例如,`\d`表示数字,`.`表示任何单个字符,`*`表示前一个元素出现零次或多次。 2. Ruby中的正则表达式 - 创建:在Ruby...

    记事本

    - 字符串方法:Ruby的字符串对象有很多内建方法,如`split`用于分割字符串,`strip`去除两端空白,`sub`或`gsub`用于替换子串。 4. **与记事本结合的实际应用**: - 生成配置文件:Ruby可以用来生成或修改配置...

    leetcode_practice

    5. 字符串处理:LeetCode中有大量关于字符串操作的题目,Ruby的String类提供了丰富的操作方法,如sub、gsub、split等,方便处理字符串问题。 6. 树结构问题:Ruby的Tree类可以方便地表示和操作树结构,例如二叉树的...

Global site tag (gtag.js) - Google Analytics