关于.*匹配和.*?匹配的区别

掉坑回忆

我有一组json数据如下:

     "resultItemId": "BDEECEB17F30435DBF79E07CEF8E8745",
        "bidObjectId": "1CFE15A68629489A81750DFE2C9A677E",
        "bidObjectName": "华侨城集团有限公司2023至2025年度内部审计及项目后评价服务",
        "inbidResultId": "109BC1A31C6140D5ACC901DDE6CD6754",
        "公司ID": "09d90ca99f5c434181b29ee1bf33a354",
        "中标候选人名称": "天职国际会计师事务所(特殊普通合伙)",
     "state":1

我的目的是匹配出所有key为非中文的数据,即

     "resultItemId": "BDEECEB17F30435DBF79E07CEF8E8745",
        "bidObjectId": "1CFE15A68629489A81750DFE2C9A677E",
        "bidObjectName": "华侨城集团有限公司2023至2025年度内部审计及项目后评价服务",
        "inbidResultId": "109BC1A31C6140D5ACC901DDE6CD6754",
     "state":1

便使用了正则表达式    

String reg = "\"\\w+\":.*,";

 

但是只匹配到了

"state":1

解决方法以及原理

 方法:将正则表达式更换为

String reg = "\"\\w+\":.*?,";

 

   原理:.*为贪婪模式,会将全文都作为匹配结果“囊括”进去,可是.*?会匹配满足条件的每一条数据。

 

  

posted @ 2023-08-17 01:44  凯子敏感吗?  阅读(30)  评论(0)    收藏  举报