2012-10-07 114 views
3

我想同样的超级简单的正则表达式上Rubular.com和我的虚拟机的Linux使用Ruby 1.9.2我不知道我为什么我得到不同的输出不同: VM:红宝石正则表达式从Rubular

my_str = "Madam Anita" 
puts my_str[/\w/] 

此输出:女士

上Rubular

它输出:MadamAnita Rubular: http://www.rubular.com/r/qyQipItdes

我喜欢一些帮助。我卡在这里。我将无法测试我的代码为hw1。

回答

4

不,它不是真的。它匹配“Madam”和“Anita”中的所有字符,但不匹配空格。您遇到的问题是my_str[/\w/]仅返回给定正则表达式的单个匹配项,而Rubular将突出显示所有可能的匹配项。

如果你需要的所有事件,你可以这样做:

1.9.3p194 :002 > "Madam Anita".scan(/\w+/) 
=> ["Madam", "", "Anita", ""] 
+1

改为使用'\ w +'...空组通常不是很有用。 – nneonneo

+0

了解。谢谢 – frenesim

3

其实,\w比赛单个字符。 Rubular中的结果包含相邻角色之间的空格,以告诉你这一点(尽管我希望他们也能使高光更明显......)。与匹配\w+的输出相比较,匹配两个字符串(MadamAnita)。

+0

感谢您注意到这一点。我想更好地突出显示。 – frenesim