Java 如何对我的字符串使用split方法

Java 如何对我的字符串使用split方法,java,Java,我已尝试拆分字符串,但无法获得预期的输出。代码如下所示: String line="com.mgnt.util.DateTimeTokenizer.setEndDateTimeValues=90027"; String[] str=line.split("\\.(?=[^.]+\\.[^.]+$)"); for(int i=0;i<=str.length-1;i++) { System.out.println(str[i]); } 它显示了上述拆分方法的正确输出。但是,我的期望如

我已尝试拆分字符串,但无法获得预期的输出。代码如下所示:

String line="com.mgnt.util.DateTimeTokenizer.setEndDateTimeValues=90027";
String[] str=line.split("\\.(?=[^.]+\\.[^.]+$)");
for(int i=0;i<=str.length-1;i++)
{
    System.out.println(str[i]);
}
它显示了上述拆分方法的正确输出。但是,我的期望如下:

com.mgnt.util
DateTimeTokenizer
setEndDateTimeValues
90027
我不知道如何使用正则表达式来获得上述预期的输出。 如果您知道,请分享您的想法。

试试:

String[] str = line.split("((?<=.*\\..*\\..*)\\.|=)");

这是在一张纸上分开的。至少有两个。在之前和之后=。

您也可以尝试以下方法:

Pattern pattern = Pattern.compile("^(.*)\\.(.*)\\.(.*)=(.*)$");
    Matcher matcher = pattern.matcher("com.mgnt.util.DateTimeTokenizer.setEndDateTimeValues=90027");

    if (matcher.find()) {
        System.out.println(matcher.group(1));
        System.out.println(matcher.group(2));
        System.out.println(matcher.group(3));
        System.out.println(matcher.group(4));
    }
结果

com.mgnt.util
DateTimeTokenizer
setEndDateTimeValues
90027

如果包名不同怎么办?。。而不是x.y.z如果是x.y.z.p.q怎么办?。。我只是好奇你的方法。我没有像x.y.z.p.q这样的软件包。我的软件包只有x.y.z.\S而不是。如果您不想在字符串中包含空格
com.mgnt.util
DateTimeTokenizer
setEndDateTimeValues
90027