java - split函数正则匹配,如何让前面不是数字的冒号作为分割符
巴扎黑
巴扎黑 2017-04-18 10:36:16
[Java讨论组]
巴扎黑
巴扎黑

全部回复(2)
PHP中文网

/:(?!\d)/


ES6

> str="姓名:王尼玛 性别:男 播音时间:每天10:20PM";
> str.split(" ").forEach((s)=>console.log(s.split(/:(?!\d)/)))
[ '姓名', '王尼玛' ]
[ '性别', '男' ]
[ '播音时间', '每天10:20PM' ]
undefined
>

正则都差不多,就用js演示一下~


java

import java.util.Arrays;
public class HelloWorld{
    public static void main(String[] args) {
        String[] sarr = "姓名:王尼玛 性别:男 播音时间:每天10:20PM".split(" ");
        String[][] Arr=new String[sarr.length][];
        for (int i=0;i<sarr.length;i++) {
            Arr[i]=sarr[i].split(":(?!\\d)");
            sarr[i]=Arrays.toString(sarr[i].split(":(?!\\d)"));
        }        
        System.out.println(Arrays.toString(sarr));
    }
}
//[[姓名, 王尼玛], [性别, 男], [播音时间, 每天10:20PM]]

java写程序很繁琐,叠床架屋的~

用python就轻松多了~

r'([^:]+):(?!\d)([^ ]+)'

>>> import re
>>> s="姓 名:王尼玛 性别:男 播音时间:每天10:20PM";
>>> p=re.compile(r'([^:]+):(?!\d)([^ ]+)')
>>> p.findall(s)
[('姓 名', '王尼玛'), (' 性别', '男'), (' 播音时间', '每天10:20PM')]
怪我咯
String str = "姓名:王尼玛 性别:男 播音时间:每天10:20PM";
List<String> list = new ArrayList<>();
for (String s : str.split(" ")) {
    int i = s.indexOf(":");
    list.add(s.substring(0, i));
    list.add(s.substring(i + 1));
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号