1

私はRubyの正規表現で遊んでいました。正規表現のトリックを見つけるはずだったのですが、理解できません。なぜですか?

  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 に答える