关于.*匹配和.*?匹配的区别解析
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">掉坑回忆</a></li><li><a href="#_label1">解决方法以及原理</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">方法:将正则表达式更换为</a></li></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2><strong>掉坑回忆</strong></h2><p>我有一组json数据如下:</p>
<div class="jb51code"><pre class="brush:xhtml;">"resultItemId": "BDEECEB17F30435DBF79E07CEF8E8745",
"bidObjectId": "1CFE15A68629489A81750DFE2C9A677E",
"bidObjectName": "华侨城集团有限公司2023至2025年度内部审计及项目后评价服务",
"inbidResultId": "109BC1A31C6140D5ACC901DDE6CD6754",
"公司ID": "09d90ca99f5c434181b29ee1bf33a354",
"中标候选人名称": "天职国际会计师事务所(特殊普通合伙)",
"state":1
</pre></div>
<p>我的目的是匹配出所有key为非中文的数据,即</p>
<div class="jb51code"><pre class="brush:xhtml;">"resultItemId": "BDEECEB17F30435DBF79E07CEF8E8745",
"bidObjectId": "1CFE15A68629489A81750DFE2C9A677E",
"bidObjectName": "华侨城集团有限公司2023至2025年度内部审计及项目后评价服务",
"inbidResultId": "109BC1A31C6140D5ACC901DDE6CD6754",
"state":1
</pre></div>
<p>便使用了正则表达式<strong> </strong></p>
<div class="jb51code"><pre class="brush:xhtml;">String reg = "\"\\w+\":.*,";
</pre></div>
<p>但是只匹配到了</p>
<div class="jb51code"><pre class="brush:xhtml;">"state":1
</pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>解决方法以及原理</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>方法:将正则表达式更换为</h3>
<div class="jb51code"><pre class="brush:xhtml;">String reg = "\"\\w+\":.*?,";
</pre></div>
<p>原理:.*为贪婪模式,会将全文都作为匹配结果“囊括”进去,可是.*?会匹配满足条件的每一条数据。</p>
頁:
[1]