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

tyb*_*103 6 ruby regex string negative-lookbehind lookbehind

制作一个参数解析器.我想将一个字符串拆分成一个数组,", "除了前面的分隔符"|".这意味着字符串

"foo, ba|, r, arg"
Run Code Online (Sandbox Code Playgroud)

应该导致

`["foo", "ba|, r", "arg"]`
Run Code Online (Sandbox Code Playgroud)

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

args.split(/(?<!\|), /)
Run Code Online (Sandbox Code Playgroud)

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

Nul*_*ion 10

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

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


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

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

/(?:[^|]), /
Run Code Online (Sandbox Code Playgroud)

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