PHP匹配多行的Regex分析

來源:互聯網
上載者:User

複製代碼 代碼如下:<table>
<tr><td>aaaa</td></tr>
<tr><td>bbbb</td></tr>
<tr><td>cccc</td></tr>
<tr><td>dddd</td></tr>
</table>

像這種的文本,用PHP的Regex怎麼匹配??
  我最初的想法:
  pattern:"/<tr>[.\n]*?<\/tr>"  (這個是錯誤的)
  想法思路:"."能匹配任意非換行字元,使用"[.\n]"組合,使其能夠匹配所有的字元(包括分行符號),但天有不測風雲啊——悲劇了,結果什麼都沒有!
  經過一番啃骨之後寫了另一個
  pattern:"/<tr>(.|\n)*?<\/tr>"  (這個是可以)
  將“[]”換成"()",使用“|”做一個或選擇,這樣就行了(納悶了,怎麼"[]"也是選擇方式的就不行???)
  網上也有一答案:
  PATTEN: "/<tr>.*?<\/tr>/is"  (很簡潔很方便,贊成此方法)

後記: 怎麼"[]"也是選擇方式的就不行???你知道的話別忘了告訴小弟一聲哦……

[]裡的.相當於\.,仔細看正則的說明去吧

涉及到換行一般考慮用模式修正符s

s (PCRE_DOTALL)
如果設定了這個修飾符, 模式中的點號元字元匹配所有字元, 包含分行符號. 如果沒有這個 修飾符, 點號不匹配分行符號.

[]裡面的是一些範圍或者組合
lz試一下"/<tr>[.]*?<\/tr>/is"這個就知道了,
還有()很強大的

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.