我有这样的名单
List<String> lista = Arrays.asList("[2017-07-01,1234567890,1234567890,06CA...]",
"[2017-07-02,1234567890,txt,06CA...]");
我试过这个正则表达式
(\\d{4}-\\d{2}-\\d{2})(\\,)(\\w+)(\\,)(\\w+)(\\,)(\\w+)\\(w+)
但是这给了我
Group 0 : 2017-07-02,1234567890,1234567891,02BA...
Group 1 : 2017-07-02
Group 2 : ,
Group 3 : 1234567890
Group 4 : ,
Group 5 : 1234567891
Group 6 : 06CA...
我希望输出这样:
Group 0: date
Group 1: no1
Group 2: no2 or txt
Group 3: code
答案 0 :(得分:1)
正则表达式匹配器始终按如下方式返回组:
组0:完全匹配
第1组:捕获组1
第2组:......
您最终获得额外群组的原因是因为您还在捕捉逗号。
此正则表达式将产生以下组:
(\\d{4}-\\d{2}-\\d{2}),(\\w+),(\\w+),(\\w+)
第0组:完全匹配(即方括号内的所有内容)
第1组:日期
第2组:第1号
第3组:第2号或文字
第4组:代码
但是,更好的方法是通过执行以下操作来剥离[
和]
:
yourString.substring(1, yourString.length() - 1);
然后通过执行以下操作进行拆分:
stripped.split(",");
这将产生一个完全符合您预期格式的数组:
[0] -> Date
[1] -> No 1
[2] -> No 2 or Text
[3] -> Code