ruby 之间的多行扫描;并否定?

标签 ruby regex linux

我正在尝试匹配 ;- 之间的文本。

我用过:

  inputx.scan(/;-.+?\n[^\n]*;-/)

但它不起作用。

我的文字是:

 baseball;-1
    norm;4
   dad;3
   soda;1
  robot;-8
   mmm;3
      fly;-1
    cat;4
    bird;4
   dragon;6
  mor;-1

我需要在 ;- 之间分隔文本。

例如,这是结果数组的第一个元素:

 baseball;-1
    norm;4
   dad;3
   soda;1
  robot;-8

这是第二个:

     fly;-1
    cat;4
    bird;4
   dragon;6
  mor;-1

最佳答案

您可以使用正则表达式来匹配以 - 和一个或多个数字结尾的任何行,然后匹配直到第一行以 - 结尾的任何文本> 和一位或多位数字:

/.*-\d+$(?m:.*?-\d+$)/

参见 Rubular demo

详细信息:

  • .*-\d+$ - 除换行符外的任何 0+ 个字符,后跟 - 和 1+ 位数字
  • (?m:.*?-\d+$) - . 匹配换行符的修饰符组:
    • .*? - 任何 0+ 个字符,尽可能少
    • - - 连字符
    • \d+ - 一位或多位数字
    • $ - 行尾。

关于ruby 之间的多行扫描;并否定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44462034/

相关文章:

python - 多行按照 ":"拆分

linux - bash 启动时更改目录

javascript - 如何使用javascript中的正则表达式从颜色代码中删除 "#"?

javascript - JS 正则表达式匹配单词,排除斜杠包围的单词

linux - 子窗口关闭时如何终止父进程

linux - Ejabberd 将在线用户数限制为 64,464。描述符已经增加

ruby - 通过 Ruby 系统调用通过 SSH 发送美元符号

ruby - 非破坏性force_encoding?

ruby-on-rails - Rails 首先排序希腊字符

ruby - XPath 选择带句点的节点