`
cxh116
  • 浏览: 76810 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Ruby sub与gsub要注意的地方

阅读更多
本文主要参考<The Ruby Way> 74页

字符串在使用sub和gsub方法时,不能使用$1,$2来替换

   "abc11abc".gsub(/\w+(\d+)\w+/,"abc#{$1}def")

运行这段代码,你会发现$1为空,如果在IRB中,第二次调用时就不会为空了,因为把上次的结果保存到$1

应该这样写
"abc11abc".gsub(/\w+(\d+)\w+/,"abc\\1def")


替换字符用单引号时,只要一个"\"
"abc11abc".gsub(/\w+(\d+)\w+/,"abc\1def")


在双引号中,反斜杠会把后面的字符串解释为八进制转义序列.
1
2
分享到:
评论
1 楼 skandhas 2011-07-07  
"abc11abc".gsub(/\w+(\d+)\w+/,"abc#{$1}def") 
因为在第一次引用$1时,尚未进行正则匹配,所以$1为nil。

如果想用$1,可以这样写:
"abc11abc".gsub(/\w+(\d+)\w+/){ |match| match = "abc#{$1}def" }

其实,还是如你所说,用\1比较方便:
"abc11abc".gsub(/\w+(\d+)\w+/,'abc\1def')

相关推荐

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

    总之,这个主题涵盖了正则表达式的匹配与替换,Ruby的`gsub`方法,以及如何结合`yield`和代码块实现更复杂的替换逻辑。通过理解和应用这些知识点,开发者能够高效地处理字符串中的模式,进行精确的文本分析和转换。

    ruby api

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

    Ruby on Rail 基础知识 一张纸

    ### Ruby on Rails基础知识详解 #### 一、简介 在IT领域,Ruby on Rails(简称RoR或Rails)是一种流行的Web应用程序开发框架,基于Ruby语言。它遵循MVC(模型-视图-控制器)架构模式,使得开发高效且结构化。本篇文章旨在...

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

    ### Ruby基础教程(第四版)第16章 正则表达式1 #### 知识点概述 在《Ruby基础教程(第四版)》的第16章中,作者bluetea详细介绍了Ruby语言中正则表达式的使用方法。本章节主要围绕正则表达式的创建、基本匹配规则...

    ruby_1_9_3_stdlib

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

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

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

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

    line.gsub(/Python/, 'Ruby') # 替换所有的"Python"为"Ruby" ``` 同时,如果需要对包含"Perl"和"Python"的文本进行替换,可以使用: ```ruby line.gsub(/Perl|Python/, 'Ruby') ``` 以上就是在Ruby中使用正则...

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

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

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

    ### Ruby中的正则表达式详解:字符串匹配与替换操作 #### 一、引言 正则表达式(Regular Expression)是一种强大的模式匹配工具,在多种编程语言中都有广泛的应用。Ruby作为一门灵活且易于使用的编程语言,其内置...

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

    ` 直接修改原始字符串,而 `sub` 和 `gsub` 返回一个新的字符串,保持原始字符串不变。 例如,在以下示例中: ```ruby phone = "2004-959-559 #This is Phone Number" phone = phone.sub!(/#.*$/, "") # 删除注释 ...

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

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

    Gsub:一个获取子域的命令

    例如,在Ruby中,`gsub`是一个全局替换方法,用于在一个字符串中查找匹配正则表达式的部分,并将其替换为另一个字符串。它不是专门用于获取子域的,但可以用来处理包含子域信息的数据。在描述中提到的"获取子域的...

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

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

    learning_ruby

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

    ruyb1.9.3标准库帮组文档

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

    leetcode_practice

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

    多文件内容检索替换

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

    RB_101_lesson-2

    7. 字符串和数组操作:Ruby提供了丰富的内建方法,如字符串连接(+)、查找(index)、替换(sub/gsub)以及数组的推导(map)和筛选(select)等。 8. 模块(Module):模块用于组织代码,提供命名空间,并能通过...

    记事本

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

    488解析课

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

Global site tag (gtag.js) - Google Analytics