我在玩 Ruby 的 Regexp。我应该找到一个正则表达式技巧,但我不明白,为什么?
p a = "This is a test!".gsub!(//,'X')
上面的输出是
"XTXhXiXsX XiXsX XaX XtXeXsXtX!X"
它在测试字符串中的任何字符之前和之后放置“X”。有谁知道为什么?
//
匹配宽度为零的子字符串,即空字符串。在任何相邻字符之间有任意多个空字符串,但该gsub
族不会在同一位置保持匹配。如果它找到一个匹配项(即本例中的空字符串),那么它将不会在同一位置再次匹配,因此它会继续查找下一个相邻字符之间的空字符串。
您要求它匹配一个零宽度字符串 ( //
),并将其替换为 'X',所以它做到了。gsub
扫描字符串并用替换替换每个匹配项(每个字母边界)。
您要求它匹配一个空格,因此它匹配字母之间的每个空空格。
它与字母不匹配,因此所有字母都保留了下来。