miantouchi 发表于 2019-3-25 21:35 会不会里面的值被吸掉了 |
|
这是 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}]"),请思考原因。 |