假设我有一个类似“abc | xyz”的字符串,我想只使用正则表达式替换将其转换为“xyz | abc”。 (对于这个例子,可能有更好的方法,但这是一个毛茸茸的事情的替身。)
以下代码不符合我的预期:
x = "abc | xyz"
x = x.gsub(/^([^\|\s]*)\s*\|\s*(\S*)/, "\2 | \1")
puts x
我做错了很明显吗?谢谢!
答案 0 :(得分:4)
您需要转义替换字符串中的反斜杠。例如,
x = "abc | xyz"
x = x.gsub(/^([^\|\s]*)\s*\|\s*(\S*)/, "\\2 | \\1")
puts x
或只是
x = "abc | xyz"
x = x.gsub(/^([^\|\s]*)\s*\|\s*(\S*)/, '\2 | \1')
puts x
和奖励积分,更简单的正则表达式:
x = "abc | xyz"
x = x.gsub(/(.*) \| (.*)/, '\2 | \1')
puts x
答案 1 :(得分:4)
总有不止一种方法可以做到这一点..
"abc | xyz".split(' | ').reverse.join(' | ')