选择性地在标记上拆分字符串

时间:2015-11-03 05:20:29

标签: java regex split

为了得到一个

的数组,我将我的字符串拆分为“by”
[get eggs, friday].

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

因此,例如,如果我的句子“在星期五之前获得鸡蛋”,它将被分成

[chill, the beach, friday] 

但是,如果标题中包含“by”这个词,那么它也会被拆分,例如“星期五到海滩的寒冷”给出了

[chill, the beach]

这不是我想要的。

此外,因为我的日期是可选的,“海边的寒冷”会给我

function removeChars(lettersToDelete, string) {
    var flags = {}; // a hash of letters to delete.
    var outputString = string.split("");
    var lettersToDelete = lettersToDelete.split("");
    var i, j;

    for (i = 0; i < lettersToDelete.length; i++) {
        flags[lettersToDelete[i]] = true;
    }
    console.log(flags);

    for (var j = 0; j < string.length; j++) {
        if (flags[string[j]]) {
            outputString[j++] = string[j];
        }
    }
    console.log(outputString); //[ 'a', 'a', 'a', 'a', undefined ]

    return outputString.join(""); // 'aaaa'
}

我确实考虑过只拆分最后一个“by”,但这个例子证明这不会起作用,因为最后一个“by”在标题中。

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

1 个答案:

答案 0 :(得分:1)

以下正则表达式只会根据分隔符by将字符串拆分为两个,分隔符string.split("\\s+by\\s+(?=\\S+$)"); 存在于最后,后跟一个单词。

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

包括所有可能的日期。

rabbitmq-plugins enable rabbitmq_delayed_message_exchange