/:(?!\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
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')]