復制代碼代碼如下:
<table>
<tr><td>aaaa</td></tr>
<tr><td>bbbb</td></tr>
<tr><td>cccc</td></tr>
<tr><td>dddd</td></tr>
</table>
像這種的文本,用PHP的正則表達式怎么匹配??
我最初的想法:
pattern:"/<tr>[./n]*?<//tr>" (這個是錯誤的)
想法思路:"."能匹配任意非換行字符,使用"[./n]"組合,使其能夠匹配所有的字符(包括換行符),但天有不測風云啊——悲劇了,結果什么都沒有!
經過一番啃骨之后寫了另一個
pattern:"/<tr>(.|/n)*?<//tr>" (這個是可以)
將“[]”換成"()",使用“|”做一個或選擇,這樣就行了(納悶了,怎么"[]"也是選擇方式的就不行???)
網上也有一答案:
PATTEN: "/<tr>.*?<//tr>/is" (很簡潔很方便,贊成此方法)
后記: 怎么"[]"也是選擇方式的就不行???你知道的話別忘了告訴小弟一聲哦……
[]里的.相當于/.,仔細看正則的說明去吧
涉及到換行一般考慮用模式修正符s
s (PCRE_DOTALL)
如果設置了這個修飾符, 模式中的點號元字符匹配所有字符, 包含換行符. 如果沒有這個 修飾符, 點號不匹配換行符.
[]里面的是一些范圍或者組合
lz試一下"/<tr>[.]*?<//tr>/is"這個就知道了,
還有()很強大的