Android 无法获取使用正则表达式的Java拆分函数

Android 无法获取使用正则表达式的Java拆分函数,android,regex,Android,Regex,我有一个格式为YYYYDDMMHHSS的datetime字符串,我想将其拆分为几个组成部分 从我对正则表达式(基于Perl和Javascript)的理解来看,我的印象是以下几点应该是可行的:- String dt[] = c.getString(c.getColumnIndex("datetime")).split("(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)"); 其中c是一个单输入光标。但事实并非如此 我搜索过SO和Google,但是,尽管

我有一个格式为YYYYDDMMHHSS的datetime字符串,我想将其拆分为几个组成部分

从我对正则表达式(基于Perl和Javascript)的理解来看,我的印象是以下几点应该是可行的:-

String dt[] = c.getString(c.getColumnIndex("datetime")).split("(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)");
其中c是一个单输入光标。但事实并非如此

我搜索过SO和Google,但是,尽管有拆分的例子,但它们只是在单个字符上拆分


我怎样才能把日期时间分解成它的组成部分呢

您可以使用此正则表达式匹配组:

public static void main(String[] args) {
    String string = "200426122313";;
    Pattern pattern = Pattern.compile("(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)");
    Matcher matcher = pattern.matcher(string);
    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));
    System.out.println(matcher.group(5));
}
然后获取输出:

2004
26
12
23
13
等。正则表达式中的括号是一个捕获组,它捕获一段文本,您要提取

您还可以使用以下命令拆分字符串:

(?<=^\d{4}|^\d{6}|^\d{8}|^\d{10})

您可以使用此正则表达式匹配组:

public static void main(String[] args) {
    String string = "200426122313";;
    Pattern pattern = Pattern.compile("(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)");
    Matcher matcher = pattern.matcher(string);
    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));
    System.out.println(matcher.group(5));
}
然后获取输出:

2004
26
12
23
13
等。正则表达式中的括号是一个捕获组,它捕获一段文本,您要提取

您还可以使用以下命令拆分字符串:

(?<=^\d{4}|^\d{6}|^\d{8}|^\d{10})
尝试使用以下命令对其进行分析:

Date date;    
String dtStart = "YYYYDDMMHHSS";
    SimpleDateFormat format = new SimpleDateFormat("yyyyddMMHHss");  //mm -> minutes??
    try {
        date = format.parse(dtStart);
        System.out.println("Date ->" + date);
    } catch (Exception e) {
        e.printStackTrace();
    }
尝试使用以下命令对其进行分析:

Date date;    
String dtStart = "YYYYDDMMHHSS";
    SimpleDateFormat format = new SimpleDateFormat("yyyyddMMHHss");  //mm -> minutes??
    try {
        date = format.parse(dtStart);
        System.out.println("Date ->" + date);
    } catch (Exception e) {
        e.printStackTrace();
    }

虽然正则表达式解决方案会起作用,但最好使用
SimpleDateFormat
处理日期而正则表达式解决方案会起作用,最好使用
SimpleDateFormat
处理日期感谢快速回复抱歉-错过了您对我评论的回复。简单的回答是,我没有尝试,因为我以一种更适合应用程序的不同方式实现了相同的最终结果。但是,对于未来,我现在知道要做什么,并且在下次需要解析字符串时将执行您的建议。-谢谢。谢谢你的快速回复。抱歉-错过了你对我评论的回复。简单的回答是,我没有尝试,因为我以一种更适合应用程序的不同方式实现了相同的最终结果。但是,对于未来,我现在知道要做什么,并且在下次需要解析字符串时将执行您的建议。-谢谢。再次感谢您的快速回复。和我之前的评论一样,我只需要这样做一次,所以日期格式化似乎也太过分了。再次感谢您的快速回复。和我之前的评论一样,我只需要这样做一次,所以日期格式化似乎也太过分了。