我有以下代码。 我的目的是能够解析一串句子中的最后一个完整句子:
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/)
=> ["一无所有"、"无所不免"、"免费某物"、"...一切都是免费的!!!!!...'"]