正则text.gsub!这段代码具体是什么意思?

查看数: 3042 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-3-25 19:10

正文摘要:

谁能帮我解读下,看了一些正则基础也理解不透这块。 text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" } \\      :相当于\ +      :重复一次或更多次 [0-9] :代表0-9任意 ...

回复

ppspssss 发表于 2019-3-25 22:35:54
miantouchi 发表于 2019-3-25 21:35
换成你给的这个代码,$1这个值就会变成空的,[]里面会替换为空了,我只能从现象里发现不一样的地方。具体 ...

会不会里面的值被吸掉了

点评

吸星大法?  发表于 2019-3-25 22:44
RyanBern 发表于 2019-3-25 19:30:20
这是 gsub! 的另一种用法。
[pre lang="Ruby"]text.gsub!(pattern) {|match| block}[/pre]

只有一个正则表达式 pattern 作为参数,后面的 {} 表示的是代码块,代码块的返回值作为实际用于替换的内容。引入代码块的意义在于可以使得要替换的内容更加灵活。因此这段
[pre lang="Ruby"]text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]"}[/pre]
的含义为:替换 \c[数字] 为 \001[数字],在这里 $1 是个特殊的变量,来表示正则表达式中第一个括号里的实际内容(在这里是 [0-9]+)

注意:不能写成 text.gsub!(/\\[Cc]\[([0-9]+)\]/, "\001[#{$1}]"),请思考原因。

点评

调皮!我正在学习和思考中!  发表于 2019-3-25 21:18

评分

参与人数 2星屑 +50 赞 +2 收起 理由
fux2 + 1 无敌的rb酥酥
guoxiaomi + 50 + 1 不想思考

查看全部评分

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部