1

我在玩 Ruby 的 Regexp。我应该找到一个正则表达式技巧,但我不明白,为什么?

  p a = "This is a test!".gsub!(//,'X')

上面的输出是

  "XTXhXiXsX XiXsX XaX XtXeXsXtX!X"

它在测试字符串中的任何字符之前和之后放置“X”。有谁知道为什么?

4

3 回答 3

3

//匹配宽度为零的子字符串,即空字符串。在任何相邻字符之间有任意多个空字符串,但该gsub族不会在同一位置保持匹配。如果它找到一个匹配项(即本例中的空字符串),那么它将不会在同一位置再次匹配,因此它会继续查找下一个相邻字符之间的空字符串。

于 2013-01-27T01:52:56.813 回答
2

您要求它匹配一个零宽度字符串 ( //),并将其替换为 'X',所以它做到了。gsub扫描字符串并用替换替换每个匹配项(每个字母边界)。

于 2013-01-27T01:41:20.503 回答
0

您要求它匹配一个空格,因此它匹配字母之间的每个空空格。

它与字母不匹配,因此所有字母都保留了下来。

于 2013-01-27T01:44:12.107 回答