`

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

相关推荐

    rust-git-gsub:在存储库中执行gsub的Git子命令

    锈-git-gsub 在存储库中执行gsub的Git子命令。 从移植。 用法 用Subversion代替Git ,运行 $ git gsub Git Subversion 然后你会得到 diff --git a/README.md b/README.md index 2185dbf..393dbc6 100644 --- a/...

    gulp-css-gsub:最小化CSS类的gulp模块

    介绍Gulp-css-gsub是一个gulp模块,它将重写您的js和css文件,以减小文件大小并模糊您的代码。好处保护代码不被窃取允许您查找未使用CSS规则及其应用CSS文件的尺寸更小(最高可享受40%的折扣)安装npm install gulp...

    hs-git-gsub:在存储库中执行gsub的Git子命令

    hs-git-gsub 在存储库中执行gsub的Git子命令 用法 用Subversion代替Git ,运行 $ git gsub Git Subversion 然后你会得到 diff --git a/README.md b/README.md index 2185dbf..393dbc6 100644 --- a/README.md +++ b...

    font-feature-abettings:从字体的 OpenType gsub 数据中收集字形名称

    从字体的 OpenType gsub数据中收集字形名称。 一个小的, -compatabile 模块,它传递字体的潜在替换列表(OpenType gsub表)并将它们转换为可用的根字符名称列表,按 OpenType 功能排序。 入门 这是我们为构建的...

    轻巧的Ruby Web爬虫/爬虫,具有优雅的DSL,可从页面提取结构化数据。-Ruby开发

    带有优雅DSL的Wombat Web抓取工具,可解析来自网页的结构化数据。 用法:gem install wombat抓取页面:最简单的使用Wombat的方法是调用Wombat.crawl并将其传递给Wombat Web抓取工具以及优雅的DSL,该...e.gsub(/ Expl

    xproc:很棒的 Ruby 短过程

    程序 XProc 是对 Ruby 的改进,它允许您使用方便的速记语法编写简单的块,其灵感来自 Scala、Crystal 和 Elixir。安装将此行添加到应用程序的 Gemfile 中: gem "xproc"用法由于它是一种改进,因此您必须在要使用它...

    turkish_support:土耳其语字符对核心Ruby方法的支持

    这个gem提供了几乎所有String方法的支持,例如String#split , String#match , String#gsub 。 它还提供对Array#sort和一些奖励方法(如String#titleize 。要求Ruby> = 2.7.0 导轨> = 6.0.0安装将此行添加到您的...

    Prototype String对象 学习

    代码如下://String对象的静态方法 Object.extend(String, { interpret: function(value) { return value == ... Object.extend(String.prototype, (function() { //内部方法,为gsub和sub函数初始化replacement参数 f

    计算机专项考试指南(GRE SUB Computer Science Test)2003版

    GRE计算机专项考试指南,想考Gsub CS的童鞋可以下了看看,比较有帮助。

    string-chapter

    要重新运行此命令,可以使用UP和DOWN箭头键查看在终端中运行的命令的历史记录。 细绳 string_multiplication.rb 应该输出: "HoHoHo" 使用字符串乘法。 (不要只打印字符串文字"HoHoHo" ) string_case.rb 应该...

    bury:类似 Ruby 的 JavaScript 方法

    类似于 Ruby 的 JavaScript 方法。 Bury.js 扩展了原生 JS 对象的原型,例如 String、Number 和 Array。 例子 [ 3 , 3 , 4 , null ] . compact . uniq . sum // => 7 [ 1 , 2 , 3 , 4 ] . append ( 5 ) . last ...

    Gsub:一个获取子域的命令

    sub 一种获取子域的命令。

    Prototype源码浅析 String部分(一)之有关indexOf优化

    添加到String.prototype中的方法比较多,不过归结起来,大致分为下面几类: 分类 方法名  原始能力增强 strip | include | startsWith | ...interpolate | sub | scan | truncate | gsub HTML处理

    String-Substitution:简单的运行时字符串替换函数

    名称 String::Substitution - 简单的运行时字符串替换...sub_*和gsub_*函数有三种变体: copy - 在副本上执行替换并返回副本。 modify - 就地修改变量(就像$s =~ s/// )。 context - 根据context猜测要使用的版

    wombat:具有优雅DSL的轻量级Ruby Web爬网程序,可从页面提取结构化数据

    用法: gem install wombat 抓取页面: 使用Wombat的最简单方法是调用Wombat.crawl并将其传递给一个块: require 'wombat'Wombat . crawl do base_url ...

    aviglitch:一个用于销毁 AVI 文件的 Ruby 库

    小故障 AviGlitch 会破坏您的 AVI 文件。 我无法解释他们为什么要销毁自己... gsub ( / \d / , '0' ) end avi . output ( '/path/to/broken.avi' ) 该库还包括一个名为datamosh的命令行工具。 它创建删除关键帧的视频。

    getting_and_cleaning_data:获取和清理数据课程中的项目的回购

    以下是处理数据以创建整洁数据所涉及的步骤 步骤 1:合并训练集和测试集以创建一个数据集。 这涉及读取训练和测试数据文件,然后组合和合并 读取训练数据文件 ...使用 gsub 删除名称中的 (, ), - 等特殊字符

    Prototype源码浅析 String部分(四)之补充

    interpolate | sub | scan | truncate | gsubinterpolate : 将字符串看作一个模板,并使用 object 的属性填充它。 sub : 将字符串中前指定个个与 pattern 指定的模式匹配的子串用 replacement 替换 scan : ...

    三剑客之【awk】.html

    awk命令常用用法整理;加入了自己在平时运用中的实例,比如通过查询数据库生成...gsub(r,s) #在整个$0中,用s代替r gsub(r,s,t) 在整个t中,用s代替r index(s,t) 返回s中字符串t的第一位置 length(s) 返回s长度 。。。

    coursera:课程项目

    活动列中的数字现在使用 gsub 替换为名称 WALKING、SITTING、LAYING、STANDING、WALKING_UPSTAIRS、WALKING_DOWNSTAIRS。 提取平均值和标准列以形成最终数据框。 子集函数用于获取活动、主题、均值和标准。 然后...

Global site tag (gtag.js) - Google Analytics