Ruby正则表达式与Rubular的区别

3

我在Rubular.com和我的VM Linux上尝试了相同的超级简单的正则表达式,使用的是Ruby 1.9.2。我不知道为什么会得到不同的输出:

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

此代码输出: Madam

在 Rubular 上输出为: MadamAnita Rubular: http://www.rubular.com/r/qyQipItdes

我需要帮助,卡在这里了。我将无法测试我的 hw1 代码。

2个回答

4
不,实际上它并没有。 它匹配“Madam”和“Anita”中的所有字符,但不匹配空格。 你遇到的问题是my_str[/\w/]只返回给定正则表达式的单个匹配项,而Rubular会突出显示所有可能的匹配项。
如果需要所有出现的情况,则可以执行以下操作:
1.9.3p194 :002 > "Madam Anita".scan(/\w+/)
 => ["Madam", "", "Anita", ""] 

1
使用\w+代替空组通常没有太大用处。 - nneonneo

3

实际上,\w 匹配 一个字符。Rubular 的结果在相邻字符之间包含了空格,以便告诉你这一点(虽然我希望他们也可以使高亮更明显一些...)。与使用\w+匹配的输出进行比较,该表达式匹配了两个字符串(MadamAnita)。


感谢您指出这个问题。我希望能有更好的高亮显示。 - frenesim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接