我在玩Ruby的Regexp。我想找到一个Regexp技巧,但我无法理解,为什么?
p a = "This is a test!".gsub!(//,'X')
以上输出
"XTXhXiXsX XiXsX XaX XtXeXsXtX!X"
它在测试字符串中的任何字符之前和之前放置'X'。谁知道为什么?
答案 0 :(得分:3)
//
匹配零宽度的子串,即空字符串。在任何相邻字符之间有任意多个空字符串,但gsub
系列不在同一位置保持匹配。如果它找到匹配(即在这种情况下是空字符串),那么它将不会在同一位置再次匹配,因此它继续到下一个相邻字符之间的空字符串。
答案 1 :(得分:2)
您要求它匹配零宽度字符串(//
),并将其替换为“X”,所以它就这样做了。 gsub
扫描字符串并用替换字符替换每个匹配项(每个字母边界)。
答案 2 :(得分:0)
你要求它匹配一个空格,所以它匹配字母之间的每个空格。
它与字母不匹配所以所有字母都保留。