<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>leeco (leeco)</title>
    <link>https://ruby-china.org/leeco</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>关于 version 1.9 之后废弃了 String 类的 grep 实例方法后的如何实现相同功能</title>
      <description>&lt;p&gt;在版本 1.9 之前 String 有 grep 实例方法，我可以使用下面的代码通过正则表达式分离出一个字符串里的多个模式匹配串并通过在传人的 block 中使用$1,$2...对匹配的字符串进行处理，但 1.9 之后废弃了 String 的 grep 方法，现在如何处理最方便。
例如下面的代码
[code]
"Hello world".grep(/^(\w+) (\w+)$/) { puts "First word is "+$1+", second word is "+$2+"." }
[/code]
会输出 First word is 'Hello', second word is 'world'.
在 1.9 之后应该如何编写对应的代码。&lt;/p&gt;

&lt;p&gt;如果使用
puts "First word is "+"Hello world"[/^(\w+) (\w+)$/, 1]+", second word is "+"Hello world"[/^(\w+) (\w+)$/, 2]+"."
明显代码变得累赘了，即使先将"Hello world"赋给一个变量，这个变量名还是会在下面出现 2 次，模式串也要出现 2 次，事实上匹配也做了 2 次，岂不是开销也是原来使用 grep 的 2 倍，那有没有更简洁的方法呢？
如果没有更简洁的方法废除原有 grep 方法的意义何在？&lt;/p&gt;</description>
      <author>leeco</author>
      <pubDate>Tue, 18 Sep 2012 00:03:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/5598</link>
      <guid>https://ruby-china.org/topics/5598</guid>
    </item>
  </channel>
</rss>
