1

次のようなパターンを含む可能性のある入力テキストがあります

bla bla bla ###FOO WORLD### bla bla bla
bla bla bla ###FOO BOB###, ###FOO ALICE###bla bla bla

これを処理して出力したい

bla bla bla HELLO WORLD bla bla bla
bla bla bla HELLO BOB, HELLO ALICEbla bla bla

###マーカー間のコンテンツを保持したいので、これは検索して置き換えるよりも少し多いです。これは正規表現で簡単にできるはずだと理解しています...しかし、単純なパターンマッチング以外の何よりも正規表現で非常に錆びています。

これを行うための最良の方法は何ですか?正規表現オブジェクトが必要ですか。または、文字列クラスにはこれにより適したメソッドがありますか?

4

2 に答える 2

4
s = "bla bla bla ###FO­O BOB##­#, ###FO­O ALICE­###bla bla bla"
s.gsub(/###F­OO (.*?)­###/, 'HELL­O \1')
# => bla bla bla HELLO BOB, HELLO ALICEbla bla bla

は、の後のテキストをキャプチャし、一致するテキストをキャプチャF­OO (.*?)テキストの後FOOに置き換えます。gsubHELLO

于 2012-08-10T14:06:47.400 に答える
0

@Baldrickは、ブロックを使用した別の答えを完全に修正します:)

 a.gsub(/###FOO (.*?)###/) do
     "HELLO " + $1
 end
于 2012-08-10T14:20:55.220 に答える