制作参数解析器。我想将一个字符串拆分为一个数组,其中分隔符为", "
,除非前面有"|"
。这意味着字符串
"foo, ba|, r, arg"
应该导致
`["foo", "ba|, r", "arg"]`
我正在尝试使用此正则表达式:(?<!\|),
在http://regexhero.net/tester/中有效,但在我尝试时
args.split(/(?<!\|), /)
在ruby中,我收到错误:undefined (?...) sequence: /(?<!\|), /
答案 0 :(得分:10)
Ruby的正则表达式引擎不支持lookbehind(还)。
您需要切换到1.9或使用Oniguruma。
如果这不是一个选项,您可以搜索|,
并将其替换为某种标记。完成所有操作后,将|,
放回去。
您还可以尝试使用正则表达式:
/(?:[^|]), /
但显然(?:[^|])
不是零宽度,这意味着你之后需要做一些额外的工作。