先看兩端代碼
<a ><span>紫膠色酸E</span></a>
</td>
<td><a itemprop="url" target="_blank"
><span
itemprop="mol_name">3-<3-(2-Aminoethyl)-6-hydroxy-phenyl>-1.2.4.7-tetrahydroxy-anthrachinon-dicarbonsaeure-(5.6); Desacetyl-laccasaeure-A(1)</span></a></td>
<td><a rel="nofollow">C24H17NO11</a></td>
</tr>
<tr>
<td class="img"><img src="http://p2.molbase.net/molpic/03/92/3921909.png?142x100"
style="width:45px;" alt="二甲基二硫代氨基甲酸鈉二水"/></td>
<td>
<a ><span>CAS號72140-17-1</span></a>
<a ><span>CAS號72140-17-1</span></a>
//表達(dá)式1
$itemP = '#<a.*?href="(.*?)"(.|\n)*?>\s*?<span>CAS號.*?</span>\s*?</a>#i';
//表達(dá)式2
$itemP = '#<a.*?href="(.*?)".*?>\s*?<span>CAS號.*?</span>\s*?</a>#i';
我本來想匹配第二段那段代碼的丐箩,如果用表達(dá)式1去匹配的話托嚣,會匹配出來一大堆前導(dǎo)廢物代碼檩帐,用第二個(gè)表達(dá)式才能正確匹配崖面。我找到原因是a標(biāo)簽結(jié)束那里不應(yīng)該用(.|\n)*?去匹配咆霜,應(yīng)該去掉\n,很顯然?在這里起不到非貪婪的作用了嘶朱,也不知道原因在哪里蛾坯。
經(jīng)過大神調(diào)撥,原來是這個(gè)原理疏遏,就是貪婪匹配不是全局匹配一個(gè)最短的脉课,而是從表達(dá)式匹配的地方開始,去匹配一個(gè)最短的财异。不是想當(dāng)然從全區(qū)抽出來一個(gè)倘零。