日期:2014-05-17  浏览次数:20426 次

求助攻,正则表达式
上次匹配正则得到了一位版主大大的支持,搞出来了一部分,详见http://bbs.csdn.net/topics/390636368帖子,在此不再阐述。
今天又遇到问题了,例如HTML页面中有两条记录:
{"id":XXX,"type":1,"fakeid":"XXX","nick_name":"天空","date_time":xxx,"content":"你好","source":"biz","msg_status":2,"has_reply":0,"refuse_reason":""}


{"id":XXX,"type":1,"fakeid":"xxxx","nick_name":"海洋","date_time":xxx,"content":"你也好","source":"","msg_status":4,"remark_name":"haiyang","has_reply":0,"refuse_reason":""}

大家可以看到这两条记录的明显区别是第二条当中的msg_status为4,然后就是多了一个"remark_name":"haiyang"。在这里我使用了

\"id\":\\d+,\"type\":\\d+,\"fakeid\":\"[^\"]+\",\"nick_name\":\"[^\"]+\",\"date_time\":\\d+,\"content\":\"[^\"]+\",\"source\":\"[^\"]+\",\"msg_status\":\\d+
进行匹配,但是为什么只能取到第一条记录而取不到第二条?两条中都msg_status,请问这个是为什么?
正则表达式 ASP.NET

------解决方案--------------------
date_time\":\\d+,
这里为什么用\\d+
这会匹配成\\(表示单个的\)以及任意个d(d+)
------解决方案--------------------
将下边红色部分的+修改成*即可

原因就是:因为你的第二条数据中source":""  双引号内无字符

\"id\":\\d+,\"type\":\\d+,\"fakeid\":\"[^\"]+\",\"nick_name\":\"[^\"]+\",\"date_time\":\\d+,\"content\":\"[^\"]+\",\"source\":\"[^\"]+\",\"msg_status\":\\d+