鍍金池/ 問答/Java  PHP  HTML/ php 正則怎么寫 嵌套匹配 外層出現(xiàn)0次或者1次的字符串,需要的是內(nèi)層的數(shù)據(jù)

php 正則怎么寫 嵌套匹配 外層出現(xiàn)0次或者1次的字符串,需要的是內(nèi)層的數(shù)據(jù)

正則匹配這樣一段網(wǎng)頁

<div class="details-message-number">
    <span class="c-blue">45</span>
    個(gè)站點(diǎn)安裝
             &nbsp; &nbsp;
         <span class="c-blue">
             43         </span>
         個(gè)站點(diǎn)付費(fèi)安裝
    </div>

其中需要的是45個(gè)站點(diǎn)安裝的“45”,和43個(gè)站點(diǎn)付費(fèi)安裝的“43”,如果沒有付費(fèi)站點(diǎn)安裝,代碼是這樣的

<div class="details-message-number">
    <span class="c-blue">180</span>
    個(gè)站點(diǎn)安裝
    </div>

43那一段就沒了
我的匹配規(guī)則是這樣

$p = '/<div class="details-message-number">(?:[\s\S]*?)class="c-blue">(?P<install_numbers>[\s\S]*?)<\/span>(?:[\s\S]*?)個(gè)站點(diǎn)安裝(?:[\s\S]*?)(?:<span class="c-blue">(?P<install_numbers_pay>[\s\S]*?)<\/span>)?/';

不加最后的問號(hào)“?”,則沒有付費(fèi)站點(diǎn)安裝的情況匹配結(jié)果為空;如果加上問號(hào),有或者沒有付費(fèi)站點(diǎn)安裝匹配結(jié)果不為空,但是install_numbers_pay字段沒有值

回答
編輯回答
鹿惑

推薦一個(gè)可視化正則表達(dá)式的網(wǎng)址
https://regexper.com/#%5C%7C%...

推薦一個(gè)正則表達(dá)式的匹配網(wǎng)址
https://regex101.com/#javascript

推薦一個(gè)正則學(xué)習(xí)地址:
http://deerchao.net/tutorials...

2018年3月20日 14:08