0

文字列があります。

'ABCXDEFXABCYXYABC'

それらを1つのスペースで区切ってもらいたいです。この文字列の既知のパターンは次のとおりです。

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

"@jonnyGold私が示した入力と出力は、私の問題を完全に説明しています。"

じゃあ、

b = 'ABC X DEF X ABC Y X Y ABC'
于 2012-06-07T02:58:12.507 に答える
2

これがネガティブな先読みのある解決策です。これは、あなたが最初に達成しようとしていたことだと思います。

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