正则表达式用于查找“某些”并替换为“xyz.some”

时间:2010-02-01 06:25:15

标签: ruby regex

我需要在ruby中编写一个正则表达式来查找像'some'这样的字符串然后用'xyz.some'替换它。我该怎么做呢?

4 个答案:

答案 0 :(得分:2)

看起来你不需要一个正则表达式 - 普通的gsub会做:

s = "foo some"
=> "foo some"
s.gsub("some", "xyz.some")
=> "foo xyz.some"

答案 1 :(得分:2)

"some string sth".gsub(/some|sth/, 'xyz.\0')
=> "xyz.some string xyz.sth"

您找到“某些”(或其他任何内容),然后您可以在替换字符串中使用\0(注意引用,您需要在\\0字符串中使用"...")你所有的正则表达式匹配。或者,您可以在正则表达式中对匹配进行分组,并在替换字符串中使用\1 - \9。要放置非匹配组,只需使用(?: )

答案 2 :(得分:2)

如果'some'可以是任意字符串(在编写脚本时未知), 使用\ 1在替换字符串中使用匹配的组(按位置)。

a = "the quick brown fox jumped over the lazy dog"
str_to_find = "the"

a.gsub(/(#{str_to_find})/, 'xyz.\1')
# => "xyz.the quick brown fox jumped over xyz.the lazy dog"

答案 3 :(得分:1)

str = 'lets make some sandwiches'
xyzstr = str.gsub(/some/, "xyz.some");