Java 防止特定字符串拆分

Java 防止特定字符串拆分,java,Java,我想拆分这些字符串,除了支出:1和其他“支出” 我的txt文件: date : 1 day : monday spend : 4 date : 2 day : tuesday spend : 1 我通过搜索找到了这些。我给出输入,例如输入:1,它给出 date : 1 day : monday spend: 2 但我有个问题,当我这样输入时,它也会给我这样的输出,例如输入:1 output: date :1 day : monday spend:2 spend:1 对于split,我编

我想拆分这些字符串,除了支出:1和其他“支出”

我的txt文件:

date : 1
day : monday
spend : 4

date : 2
day :  tuesday
spend : 1
我通过搜索找到了这些。我给出输入,例如输入:1,它给出

date : 1
day : monday
spend: 2
但我有个问题,当我这样输入时,它也会给我这样的输出,例如输入:1

output:
date :1
day : monday
spend:2
spend:1
对于split,我编写了以下代码:

for (String token : line.split(":")) { // Splitting each line with ':'
                        if (!token.trim().equals(" day")) { // Adding token to list conditionally.
                            list.add(token);
                        }
                    } 
有没有什么办法可以防止“花费”被拆分。我的意思是拆分应该只在每一行的日期进行。

要在冒号上拆分,除非冒号前面有
“expense”


line.split((?我不确定这是否是您想要的,但您可以在拆分中使用lookback:

String s = "date : 1\nday : monday\nspend : 4\n";
String[] r = s.split("(?<!spend(\\s+)?):");
System.out.println(Arrays.toString(r));

是否希望拆分发生在冒号上,除非前面有“花费”?是的,conatins花费的字符串行:…不能拆分。请在不带空格的情况下尝试:
…花费:4
@Bohemian,很容易修复-查看更新的答案。在“线程”main中给出错误…异常"java.util.regex.PatternSyntaxException:命名捕获组缺少尾随“>”。我测试了它,它工作正常。你确定你正确复制了我的代码吗?如果你忽略了
,你看到的错误就会发生-你一定没有正确复制我的代码。尝试直接复制粘贴到你的代码中。我是这样做的:f或者(字符串标记:line.split((?是-这是正确的。为了确保这一点,我将您的代码复制到了我的IDE中,并且工作正常。这里还发生了其他一些事情。可能您还没有重建代码?您的IDE中是否启用了“自动重建”?我正在使用eclipse并已完成。好的,如果它在您的IDE中工作,那么我将创建新的可能是软件问题。
String s = "date : 1\nday : monday\nspend : 4\n";
String[] r = s.split("(?<!spend(\\s+)?):");
System.out.println(Arrays.toString(r));
[date ,  1
day ,  monday
spend : 4
]