我有一些输入文字,可能包含一些模式,如
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
这不仅仅是查找和替换,因为我想保留###标记之间的内容。我理解这应该很容易用正则表达式......但是除了简单的模式匹配之外,我的正则表达式非常生疏。
这样做的最佳方式是什么?我需要正则表达式对象吗?或者字符串类是否有更适合此的方法?
答案 0 :(得分:4)
s = "bla bla bla ###FOO BOB###, ###FOO ALICE###bla bla bla"
s.gsub(/###FOO (.*?)###/, 'HELLO \1')
# => bla bla bla HELLO BOB, HELLO ALICEbla bla bla
FOO (.*?)
会在FOO
之后捕获文字,而gsub
会将匹配的文字替换为HELLO
,后跟捕获文字。
答案 1 :(得分:0)
@Baldrick完全正确使用块的另一个答案:)
a.gsub(/###FOO (.*?)###/) do
"HELLO " + $1
end