6

制作参数解析器。我想将字符串拆分为分隔符所在的数组,", "除非前面有"|". 这意味着字符串

"foo, ba|, r, arg"

应该导致

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

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

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

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

4

1 回答 1

10

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

您需要切换到 1.9 或使用Oniguruma


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

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

/(?:[^|]), /

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

于 2011-09-30T03:22:23.270 回答