关于正则表达式匹配问题

zlp321002 2016-08-02 04:08:04
...
var PRODUCT_HASH=new Hash({"3627":{"bn":"G507779B886294-3","price":184.8,"mktprice":268.92,"store":73,"weight":"6000.000","mprice":{"9":177.41,"10":177.41,"13":180.6,"26":176.4,"1":184.8,"2":182.952,"3":181.104,"4":181.104,"5":179.256,"6":179.256,"7":177.408,"8":177.408},"spec_private_value_id":["14331943713"]}});
var PRODUCT_SPECV_ARR=[];
PRODUCT_HASH.each(function(v){
PRODUCT_SPECV_ARR.push(v['spec_private_value_id']);
});


我想匹配:”var PRODUCT_HASH=new Hash(“ 与 “);” 之间的json 字符,正则如何写呢

要求输出如下:

{"3627":{"bn":"G507779B886294-3","price":184.8,"mktprice":268.92,"store":73,"weight":"6000.000","mprice":{"9":177.41,"10":177.41,"13":180.6,"26":176.4,"1":184.8,"2":182.952,"3":181.104,"4":181.104,"5":179.256,"6":179.256,"7":177.408,"8":177.408},"spec_private_value_id":["14331943713"]}}
...全文
222 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2016-08-18
  • 打赏
  • 举报
回复
json会有嵌套现象,所以此处应该使用平衡组:
(?<=var PRODUCT_HASH=new Hash\()\{((?<o>\{)|(?<-o>)\}|[^{}]+)*(?(o)(?!))\}(?=\);)
  • 打赏
  • 举报
回复
()内可能出现()吗? 如果不可能出现的话,简单的
@"var\s+PRODUCT_HASH=new\s+Hash\(([^()]*?)\)"
就可以,然后m.Groups[1]取值, 否则的话,就要用上平衡组了,平衡组怎么写查下就知道了,都一样的写法
qq_35756957 2016-08-17
  • 打赏
  • 举报
回复
秋的红果实 2016-08-02
  • 打赏
  • 举报
回复
@"(?<=Hash\().+?(?=\))"
巴士上的邂逅 2016-08-02
  • 打赏
  • 举报
回复
var sss = Regex.Match(s, @"\(([{\[].*?[}\]])\)");
Console.WriteLine(sss.Groups[1].Value);
{"3627":{"bn":"G507779B886294-3","price":184.8,"mktprice":268.92,"store":73,"weight":"6000.000","mprice":{"9":177.41,"10":177.41,"13":180.6,"26":176.4,"1":184.8,"2":182.952,"3":181.104,"4":181.104,"5":179.256,"6":179.256,"7":177.408,"8":177.408},"spec_private_value_id":["14331943713"]}}

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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