使用Ruby在一个或多个字符的模式之间插入一个空格

时间:2012-06-07 02:40:45

标签: ruby regex

我有一个字符串。

'ABCXDEFXABCYXYABC'

我希望将它们分隔一个空格。此字符串中的已知模式为:

ABC
X
DEF
Y

结果字符串应为

'ABC X DEF X ABC Y X Y ABC'

a = 'ABCXDEFXABCYXYABC'
b = a.gsub(/[^ ]\((ABC|DEF|X|Y)\)[^ ]/,' \1 ')

我的gsub正则表达式没有运气。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

你太复杂了:

1.9.3p194 :001 > a = 'ABCXDEFXABCYXYABC'
 => "ABCXDEFXABCYXYABC" 
1.9.3p194 :002 > a.gsub(/ABC|DEF|X|Y/, '\0 ').strip
 => "ABC X DEF X ABC Y X Y ABC" 

答案 1 :(得分:2)

“@ jonnyGold我已经展示的输入和输出完全描述了我的问题”

那么,

b = 'ABC X DEF X ABC Y X Y ABC'

答案 2 :(得分:2)

这是一个negative lookahead的解决方案,这是我认为你首先想要完成的事情:

a.gsub(/(ABC|DEF|X|Y)(?!$)/, '\1 ')
=> "ABC X DEF X ABC Y X Y ABC"