我正在尝试匹配 ;-
之间的文本。
我用过:
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/