2015-11-03 18 views
-1

我分裂我的这个词串“由”为了得到一个数组,它是分割字符串选择性地标记

[<title>, <date>], 

其中<日期>是一个可选项目。

因此,举例来说,如果我有一句话“在周五得到蛋”,将它分成

[get eggs, friday]. 

但是,如果标题中含有“被”字,它会被分割,以及,例如“由星期五寒冷的海滩”给出

[chill, the beach, friday] 

这不是我想要的。

而且,因为我的日期是可选的,“寒意由上海滩”会给我

[chill, the beach] 

我没想到周围的最后分裂“由”而已,但这个例子证明,这难道不工作,因为最后的“by”在标题中。

我目前正在使用Java正则表达式和命令String.split(...)。反正有没有想要得到我想要的东西,或者这是不可能的,而不必逃避前面的“by”(“星期五在海滩上寒意”,然后在拆分后删除“\”)?

回答

1

下面的正则表达式会将字符串拆分为两个,仅基于最后存在的分隔符by,后面紧跟一个单词。

string.split("\\s+by\\s+(?=\\S+$)"); 

包括所有可能一天的超前内。

string.split("\\s+by\\s+(?=(?:friday|monday|saturday)$)"); 
+0

我可以知道原因吗? –

+0

或做匹配而不是拆分https://regex101.com/r/zZ1gC1/2 –