繁体   English   中英

红宝石正则表达式在字符的最后一次出现时分裂

[英]ruby regex split on last occurance of character

我对此有些困惑,我也不是1.8,所以我没有提前。

我有一堆看起来像这样的字符串:

"a/b/c/d/e/f 1/2/3"

我想变成:

"a/b/c/d/e" "f" "1/2" "3"

因此,基本上我希望它被空格开头之前的最后一个斜杠分开。 我觉得我可以正常执行此操作,但拆分似乎总是很奇怪。

1.8缺乏前瞻 ,没有前瞻 你需要的只是这个:

str.split(/\/(?=[^\/]+(?: |$))| /)

此拆分模式匹配a)任意斜杠,其后跟非斜杠字符,直至下一个空格或字符串的末尾;以及b)任意空格。

def foo s
   return [$1,$2] if s =~ /(.+)\/(\S)/
end

str = "a/b/c/d/e/f 1/2/3"
a = str.split /\s+/
a.collect { |e| foo e }.flatten

=> ["/a/b/c/d/e", "f", "1/2", "3"]

我分解了拆分并收集。 当然,您可以根据需要缩短此时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM