Ruby围绕一个简单的模式查找和替换

Ruby围绕一个简单的模式查找和替换,ruby,regex,replace,text-processing,string-matching,Ruby,Regex,Replace,Text Processing,String Matching,我有一些输入文本,可能包含一些模式,如 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 这比查找和替换要复杂一些,因为我希望在####标记之间保留内容。我知道这应该是一个简

我有一些输入文本,可能包含一些模式,如

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
这比查找和替换要复杂一些,因为我希望在####标记之间保留内容。我知道这应该是一个简单的正则表达式。。。但是除了简单的模式匹配之外,我对正则表达式非常生疏

做这件事最好的方法是什么?我需要正则表达式对象吗。或者string类是否有更适合这种情况的方法

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
之后的文本,
gsub
将匹配文本替换为
HELLO
,后跟捕获文本


F-OO(.*?
捕获
FOO
之后的文本,
gsub
将匹配文本替换为
HELLO
,然后是捕获文本。

@Baldrick完全正确,只是使用块的另一个答案:)


@Baldrick完全正确,只是使用blocks的另一个答案:)


谢谢,正是我想要的!谢谢,正是我想要的!
 a.gsub(/###FOO (.*?)###/) do
     "HELLO " + $1
 end