Ruby中的正则表达式负面看起来似乎不起作用

制作一个参数解析器。 我想将一个字符串拆分为一个数组,其中分隔符是", "除了以"|"开头之外 。 这意味着字符串

 "foo, ba|, r, arg" 

应该导致

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

我正在尝试使用这个正则表达式: (?<!\|),它在http://regexhero.net/tester/中有效,但是当我尝试

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

在ruby中,我收到一个错误: undefined (?...) sequence: /(?<!\|), /

Ruby的正则表达式引擎不支持lookbehind(尚未)。

您需要切换到1.9或使用Oniguruma 。


如果这不是一个选项,您可以搜索|,并用某种标记替换它。 毕竟说完了,把|,放回去。

你也可以试试像这样的正则表达式:

 /(?:[^|]), / 

但显然(?:[^|])不是零宽度,这意味着你之后需要做一些额外的工作。