ruby - Ruby 中的正则表达式负后视似乎不起作用

标签 ruby regex string lookbehind negative-lookbehind

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

"foo, ba|, r, arg"

应该导致

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

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

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

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

最佳答案

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

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


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

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

/(?:[^|]), /

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

关于ruby - Ruby 中的正则表达式负后视似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7605615/

相关文章:

ruby - 如何在需要 Ruby 文件时发现加载了哪些类

regex - Visual Studio Code 中的多行正则表达式

java - StringUtils.isBlank 与正则表达式

python - 循环 "Forgets"删除一些项目

ruby-on-rails - Rails - 从 acts_as_follower gem 订购循环

ruby - 如何在特殊符号之前剪切一段文字?

javascript - 用于电话号码验证的正则表达式,具有最小和最大长度检查

regex - Vim:如何替换字符串的多个实例,但仅限于该字符串中的某些分隔符之间

jquery - 运行良好的 Javascript 字符串实用程序库

ruby-on-rails - 仍然很难使用 RoR MVC 方法