我有一个字符串。
'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正则表达式没有运气。
感谢您的帮助。
答案 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"