2014-03-26 31 views
-1

在Ruby中:如何在'='處分割字符串,但不在'\ ='? 實施例:紅寶石分爲'='但''不等於''='

string = "abc = def \= ghi" 
    --> ["abc", "def \\= ghi"] 

隨着string.split( 「=」)我得到在陣列三個條目。

+5

'「ABC =高清\ = ghi「'與'」abc = def = ghi「'相同。因此,沒有什麼區分'='和'\ =',你所問的是不可能的。 – sawa

+1

除了@ sawa的觀點之外,如果你希望字符串和所需數組的第二個元素都包含'\\ =',而不是'\ =',請編輯你的問題以進行更正。如果您選擇讓問題保持原樣,那麼預計會大量減少。 –

回答

0

以獲得所需的輸出正是你也可以只使用空間:

string.split(" = ") 

:-)

+0

該示例包含空格,但沒有提及需要的空格。如果代碼起源於代碼片段,那麼看到'abc = def'並不罕見。 –

+0

你是對的,你不會指望空格,但在他的例子中它們不是數組中拆分字符串的一部分。無論如何,這就是笑臉的原因。 – Patru

+0

確實,我沒有想到空白...... :) – ewi

1

您可以分割上

(?<!\)= 

(?<=...)是負回顧後。

2

只需使用負向lookbehind檢查=標誌之前是否沒有\

string = "abc = def \\= ghi" 
print string.split(/(?<!\\)=/).flatten 

輸出:

["abc ", " def \\= ghi"] 
+2

'.flatten'在這裏不需要,'.split'的結果已經是一個扁平的數組。 –

+0

@DaniëlKnippers謝謝。你是對的。 –