我曾尝试拆分字符串,但无法获得预期的输出。见下面是代码:
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
显示上述拆分方法的正确输出。但是,我的期望如下,
com.mgnt.util
DateTimeTokenizer
setEndDateTimeValues
90027
我不知道如何使用正则表达式获得上述预期输出。 分享您的想法如果您知道。
答案 0 :(得分:1)
试试:
String[] str = line.split("((?<=.*\\..*\\..*)\\.|=)");
此分割在.
之前至少有两个.
和=
。
答案 1 :(得分:0)
你也可以试试这个:
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