4

前もって感謝します...

ruby の正規表現に問題があるか、文字列からスラッシュを削除する方法を見つけています。これが私の文字列の外観です。

string = "word \/ word"

バックスラッシュとスラッシュの両方を削除しようとしています。この結果が欲しい:

string = "word  word"

エスケープ文字で何かが足りないと思います。

私はこれを試しました:

string.gsub(/\//, "")

バックスラッシュは削除されますが、スラッシュは残ります。エスケープ文字のバリエーションをあちこちで試してみましたが、意味がありません!

私は正規表現が苦手で、一般的に文字列を扱うことに非常に不満を感じており、途方に暮れています。それは明らかなことだと思いますが、何が欠けていますか?

4

3 に答える 3

4

その理由は、 と の両方が単独では正規表現で有効な文字ではないためです/\そのため、それらの前に a を付けてエスケープする必要があり\ます。そう\なる\\/なる\/. これらを別のスラッシュのセット内にまとめて正規表現リテラルを作成すると、次のようになります。

string.gsub(/\\\//, "")

これを書く別の方法は次のとおりです。

string.gsub(/#{Regexp.escape('\/')}/, "")

正規表現文字列を作成するための優れた方法については、rubular を調べてください。

http://rubular.com/r/ml1a9Egv4B

于 2012-04-01T00:47:42.077 に答える
3
str = "word \/ word"
p str.delete('\/') #=>"word  word"
# to get rid of the double spaces:
p str.delete('\/').squeeze(' ') #=>"word word"
于 2012-04-01T07:00:35.440 に答える
0

それは実際にあなたが望むことをしますが、あなたが考える理由ではありません:

string = "word \/ word"
# => "word / word"
string.gsub(/\//, "")
# => "word  word"

注: gsub が必要です! 文字列の内容を置き換えたい場合

于 2012-04-01T06:05:38.387 に答える