【问题标题】:Regex negative lookbehind in Ruby doesn't seem to workRuby 中的正则表达式负向后追溯似乎不起作用
【发布时间】:2011-09-30 03:18:07
【问题描述】:

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

"foo, ba|, r, arg"

应该会导致

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

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

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

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

【问题讨论】:

  • 这适用于 1.9,所以如果您可以升级您的 Ruby 安装,请继续这样做。
  • @Michael Kohl 这正是我所做的:)
  • 另外,对于 Ruby 正则表达式测试,我会使用 Rubular

标签: ruby regex string lookbehind negative-lookbehind


【解决方案1】:

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

您需要切换到 1.9 或使用 Oniguruma


如果这不是一个选项,您可以搜索 |, 并将其替换为某种标记。说完,把|,放回去。

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

/(?:[^|]), /

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

【讨论】:

猜你喜欢
  • 2019-04-05
  • 1970-01-01
  • 2017-08-23
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
相关资源
最近更新 更多