Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 我如何在一个";上拆分&引用;但前提是后面没有数字?_Ruby_Regex_String_Split - Fatal编程技术网

Ruby 我如何在一个";上拆分&引用;但前提是后面没有数字?

Ruby 我如何在一个";上拆分&引用;但前提是后面没有数字?,ruby,regex,string,split,Ruby,Regex,String,Split,我想用空格或“”分隔一行,分隔前面的数字和后面的非数字。我想像这样分开: "10.ABC DEF GHI" # => ["10", "ABC", "DEF", "GHI"] "10.00 DEF GHI" #=> ["10.00", "DEF", "GHI"] 我有 words = line.strip.split(/(?<=\d)\.|[[:space:]]+/) words=line.strip.split(/(?在之后添加一个(?!\d)。: /(?<=\d)\

我想用空格或“”分隔一行,分隔前面的数字和后面的非数字。我想像这样分开:

"10.ABC DEF GHI" # => ["10", "ABC", "DEF", "GHI"]
"10.00 DEF GHI" #=> ["10.00", "DEF", "GHI"]
我有

words = line.strip.split(/(?<=\d)\.|[[:space:]]+/)
words=line.strip.split(/(?在
之后添加一个
(?!\d)

/(?<=\d)\.(?!\d)|[[:space:]]+/
          ^^^^^^

/(?只是好奇,你所有的问题都是从哪里来的?每天提出一个Ruby问题并不容易……而且问题一直在稳步改进。坚持下去。你的正则表达式强制执行“…后面没有数字”,但OP想要“…后面有一个非数字”,这稍微有些不同(虽然OP实际上可能希望“不跟随”)。两种解释都可以使用正则表达式。@CarySwoveland:我认为没有必要,请看,我想用空格或“.”分隔一行,前面是一个数字,后面是一个非数字。这意味着在点之前必须有一个数字(
)(?我不知道怎么做)“…后面有一个非数字”可能意味着它后面必须跟一个不是数字的字符。“没有”不是“非数字”。这就像得出结论“跟踪者跟踪的是一个非男性”可能意味着跟踪者没有跟踪任何人。根据你的解释,你会说“…后面没有数字”“(虽然“数字”更好。)“后面必须跟一个不是数字的字符”和“后面不能跟一个数字”之间有区别。后一种方法(我的解释)也会在字符串末尾的点处拆分字符串。
line = "10.00 DEF GHI"
line.strip.split(/(?<=\d)\.|[[:space:]]+/) # => ["10", "00", "DEF", "GHI"]
/(?<=\d)\.(?!\d)|[[:space:]]+/
          ^^^^^^