我需要在ruby中编写一个正则表达式来查找像'some'这样的字符串然后用'xyz.some'替换它。我该怎么做呢?
答案 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");