JAVA 正则表达式 提取数据

比如说我有一个字符串Stringstr="name:vunv,age:20";我怎么从中提取到vunv和20?正则表达式能做到吗?... 比如说 我有一个字符串 String str = "name:vunv,age:20";
我怎么从中提取到 vunv和20?
正则表达式能做到吗?
展开
 我来答
cainiaokan
2013-03-28 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:611万
展开全部
类似这种,就不要用什么正则表达式了。
直接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,这种情况下你就知道,没有分割成功,说明找不到分隔符,就认为不存在分隔符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gwj879
推荐于2018-08-15 · TA获得超过539个赞
知道小有建树答主
回答量:182
采纳率:100%
帮助的人:97万
展开全部
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));
}

望满意,且给分哦~
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王者165
2013-03-28 · TA获得超过138个赞
知道小有建树答主
回答量:256
采纳率:0%
帮助的人:55.6万
展开全部
这么简单的问题,不用正则表达式都可以的,你可以直接拆分字符串

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);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
火舞蝶衣
2013-03-28 · TA获得超过3818个赞
知道小有建树答主
回答量:1521
采纳率:50%
帮助的人:508万
展开全部
你直接利用逗号一分二,再用冒号提取冒号后面的项就可以了啊,不需要用正则表达式啊,当然表达式也可以完成
追问
我要做个东西要用到,因为里面的项是不定的,我只知道它的模板!
比如说现在我要的可能是从 提问中的那个数据中提取想要的数据,
下次可能是 String str = "name=vunv,age=20,height:182";中去提取vunv,20,182,分隔符也不是确定的,所以用正则表达式应该是最简单的,不然做起来很麻烦.

我现在就是用的你说的方法做的,通用性很差.模板换一次就要改一次代码....

所以想改用正则表达式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式