如何在 Ruby 'split' 中使用多个分隔符进行分隔?



我有以下代码。 我的目的是能够解析一串句子中的最后一个完整句子:

string = "something for nothing.  'nothing for free.'"
string.split(/!|.|.'|?/)
=> ["something for nothing", "  'nothing for free", "'"]

我希望能够做array.last并得到最后一句话,无论它以'!','?','.'结尾,还是引号的结尾,如"或"。

但是当我尝试包含组合时,如上所述,它不会将.'部分视为单个分隔符。

如我所见,句子之间有两个空格。因此,只需拆分它们,而不是使用正则表达式,这里根本不需要正则表达式。

puts string.split("  ").last #=> 'nothing for free.'

如果标点符号得到保证,那么您可以使用 rex

puts string.split(/(?<=[.?!]("|'|))s+/).last

正则表达式/(?<=[.?!]("|'|s))s+/使用后视,并在.?! + "'或空格之后拆分空间。

string = "something for nothing.  'nothing for free.'. Something for free? '...Everything for FREE!!!!!!...' "
string.split(/b?.s|?s|!s/)

=> ["一无所有"、"无所不免"、"免费某物"、"...一切都是免费的!!!!!...'"]

最新更新