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

于 2012-08-10T14:06:47.400 回答
0

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

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