2011-09-30 52 views
6

製作參數解析器。我想將一個字符串拆分成一個數組,其中分隔符爲", ",除了前面有"|"。這意味着字符串Ruby中的正則表達式負向後臺似乎不起作用

"foo, ba|, r, arg" 

應導致

`["foo", "ba|, r", "arg"]` 

我試圖用這個表達式:(?<!\|),http://regexhero.net/tester/工作,但是當我嘗試

args.split(/(?<!\|), /) 

在Ruby中,我得到一個錯誤:undefined (?...) sequence: /(?<!\|), /

+1

這在1.9中有效,所以如果您可以升級您的Ruby安裝,請繼續操作。 –

+0

@邁克爾科爾,這正是我做的:) – tybro0103

+0

此外,對於Ruby正則表達式測試,我會使用[Rubular](http://rubular.com/)。 – Pakman

回答

10

Ruby的正則表達式引擎不支持端口lookbehind(還)。您需要切換到1.9或使用Oniguruma


如果這不是一個選項,你可以搜索|,和帶有某種標誌的更換。說完之後,把|,放回去。

您也可以嘗試像一個正則表達式:

/(?:[^|]),/

但顯然(?:[^|])不是零寬度,這意味着你需要做一些額外的工作之後。

+0

請注意,Ruby現在至少支持從1.9.3開始的負向倒序:http://ruby-doc.org/core-1.9.3/Regexp.html – filsa