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

时间:2011-09-30 03:18:08

标签: ruby regex string lookbehind negative-lookbehind

制作参数解析器。我想将一个字符串拆分为一个数组,其中分隔符为", ",除非前面有"|"。这意味着字符串

"foo, ba|, r, arg"

应该导致

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

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

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

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

1 个答案:

答案 0 :(得分:10)

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

您需要切换到1.9或使用Oniguruma


如果这不是一个选项,您可以搜索|,并将其替换为某种标记。完成所有操作后,将|,放回去。

您还可以尝试使用正则表达式:

/(?:[^|]), /

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