2

正規表現が機能しないのはなぜだろうか。次の動作を実現する必要があります。

"aoaoaoaoaoao".gsub!(/o/, 'e')

上記は正しく私に与えます:aeaeaeaeaeae

さて、本物は次のようになります。

"Today I ate a ((noun)), and it tasted ((adjective))".gsub!(/\(\(.*\)\)/, "word")

そしてその結果は「今日私は言葉を食べた」ですが、それが私に戻ってくることを望んでいました: 「今日私は言葉を食べました、そしてそれは言葉を味わいました」

正規表現に問題があるのは明らかです(右?)。正規表現は1回しか置き換えられないからです。すべての試合を置き換える方法を教えてください。(私の最初の例のように)

ありがとうございました!

4

1 に答える 1

8

次の正規表現が必要です。

/\(\(.*?\)\)/

.*?一致を取得するために消費する文字数をできるだけ少なくします。したがって、問題は、正規表現が一度置換されたことではなく、文字列の最初((から最後まで、あまりにも大きな部分に一致したこと))です。

于 2011-09-21T20:15:24.070 に答える