JAVA 正则表达式 提取数据
比如说我有一个字符串Stringstr="name:vunv,age:20";我怎么从中提取到vunv和20?正则表达式能做到吗?...
比如说 我有一个字符串 String str = "name:vunv,age:20";
我怎么从中提取到 vunv和20?
正则表达式能做到吗? 展开
我怎么从中提取到 vunv和20?
正则表达式能做到吗? 展开
4个回答
展开全部
类似这种,就不要用什么正则表达式了。
直接String[] ss = str.split(",");
Map m= new HashMap();
for(String s:ss){
String [] ts = s.split(":");
m.put(ts[0],ts[1]);
}
然后你想用name属性,就直接m.get("name");就取到了
直接String[] ss = str.split(",");
Map m= new HashMap();
for(String s:ss){
String [] ts = s.split(":");
m.put(ts[0],ts[1]);
}
然后你想用name属性,就直接m.get("name");就取到了
更多追问追答
追问
分隔符会变,模板也会变!
比如我前面给出的那条数据,模板就是 name:${name},age:${age}
但是这个模板可能是其它的,比如 name=${name},age=${age}
甚至会有其它的项 name:${name},age:${age},height:${height}
甚至没有前面的提示符, 例如 ${name},${age}
我能知道的只有这个数据模板,然后要从中提取数据,不用正则表达式很难做到
我的想法是根据这个模板来生成一个正则表达式,然后去匹配数据,再提取数据!
追答
这个可以明确的告诉你,根本不可能,你都说了,模板都不一定是什么样子,你又怎么可能写出一个以不变应万变的代码呢?如果只是简单的分隔符变化,那很简单啊。只要你把能想到的所有分隔符都列出来都可以,有其他项,也很容易解决,我这个代码就不怕他有其他项。但是你连模板到底会有几种情况都说不清楚,就相当于连需求都没有,试问?如果让一个程序员在连需求都不明确的情况下,开发出一个绝对能满足需求的代码?
分隔符不一样,split的时候就罗列出来,比如split(":|=|^|&")等等。split里面本身就是正则,只要能想得到的分隔符都列上就能解决你说的,分隔符不一定是什么的情况!
如果连提示符都没有,你就会检查到,再次split的时候,length为1,这种情况下你就知道,没有分割成功,说明找不到分隔符,就认为不存在分隔符。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Pattern p = Pattern.compile("(name:)([a-zA-Z]*)(,age:)([0-9]*)");
Matcher m = p.matcher("name:vunv,age:20");
while (m.find()) {
System.out.println(m.group(2));
System.out.println(m.group(4));
}
望满意,且给分哦~
Matcher m = p.matcher("name:vunv,age:20");
while (m.find()) {
System.out.println(m.group(2));
System.out.println(m.group(4));
}
望满意,且给分哦~
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么简单的问题,不用正则表达式都可以的,你可以直接拆分字符串
String str = "name:sddd,age:20";
String name = str.split(",")[0].split(":")[1];
String age = str.split(",")[1].split(":")[1];
System.out.println(name+":"+age);
String str = "name:sddd,age:20";
String name = str.split(",")[0].split(":")[1];
String age = str.split(",")[1].split(":")[1];
System.out.println(name+":"+age);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你直接利用逗号一分二,再用冒号提取冒号后面的项就可以了啊,不需要用正则表达式啊,当然表达式也可以完成
追问
我要做个东西要用到,因为里面的项是不定的,我只知道它的模板!
比如说现在我要的可能是从 提问中的那个数据中提取想要的数据,
下次可能是 String str = "name=vunv,age=20,height:182";中去提取vunv,20,182,分隔符也不是确定的,所以用正则表达式应该是最简单的,不然做起来很麻烦.
我现在就是用的你说的方法做的,通用性很差.模板换一次就要改一次代码....
所以想改用正则表达式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询