正则表达式求教

zz250121244 2012-05-29 11:38:31
如题, ,{a:1, b:key, c:3},{a:1, b:key1, c:3},{a:1, b:key2, c:3},{a:1, b:key3, c:3},{a:1, b:key4, c:3},
我有一组字符串, 由N个json格式的字符串组成,每一组json字符串其中有一个属性是唯一的,也就是上面的key.求一正则,能够根据key截取出key所在的json字符串.
...全文
81 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2012-05-29
  • 打赏
  • 举报
回复
好像明白你的意思了,要动态根据key来截取
String key = "key1"; //取key1所在的json字符串
String s = ",{a:1, b:key, c:3},{a:1, b:key1, c:3},{a:1, b:key2, c:3},{a:1, b:key3, c:3},{a:1, b:key4, c:3},";
Matcher m = Pattern.compile(String.format("[{][^{}]*?%s[^{}]*[}]", key)).matcher(s);
while (m.find()) {
System.out.println(m.group());
}

qybao 2012-05-29
  • 打赏
  • 举报
回复
for example
String s = ",{a:1, b:key, c:3},{a:1, b:key1, c:3},{a:1, b:key2, c:3},{a:1, b:key3, c:3},{a:1, b:key4, c:3},";
Matcher m = Pattern.compile("[{][^{}]*?key[^{}]*[}]").matcher(s);
while (m.find()) {
System.out.println(m.group());
}


或者,你直接分割也可以
String s = ",{a:1, b:key, c:3},{a:1, b:key1, c:3},{a:1, b:key2, c:3},{a:1, b:key3, c:3},{a:1, b:key4, c:3},";
String[] sa = s.replaceAll("^[,]", "").split("(?<=[}]),"); //去掉开头的逗号,再按},分割
for (String ss : sa) {
System.out.println(ss);
}
zz250121244 2012-05-29
  • 打赏
  • 举报
回复
{a:1, b:key2, c:3} 截取出来的最终效果.
qybao 2012-05-29
  • 打赏
  • 举报
回复
问题都木有看明白
LZ用例子说明一下,截取出来的结果是什么样的?
zz250121244 2012-05-29
  • 打赏
  • 举报
回复
3Q...结贴. 我直接负向预查可以直接截取出来了. 剩了while循环了.

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧