0

我有一个字符串。

'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 正则表达式没有运气。

谢谢你的帮助。

4

3 回答 3

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" 
于 2012-06-07T02:58:02.343 回答
2

这是一个带有负前瞻的解决方案,这是我认为您首先要实现的目标:

a.gsub(/(ABC|DEF|X|Y)(?!$)/, '\1 ')
=> "ABC X DEF X ABC Y X Y ABC"
于 2012-06-07T03:04:44.557 回答
2

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

好吧,

b = 'ABC X DEF X ABC Y X Y ABC'
于 2012-06-07T02:58:12.507 回答