[問題] 匹配多行

看板RegExp (正規表示式 Regular Expression)作者 (pm2002)時間13年前 (2011/09/11 09:07), 編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/2 (看更多)
<?php $text = '<text> 這是第一行 這是第二行 這是第三行 </text>'; preg_match_all('@<text>([.\n]+)</text>@',$text,$result,PREG_SET_ORDER); echo $result[0][1]; ?> 以上述為例,我想取出<text></text>標籤包起來的內容 維基 regex 條目的其中一條內文: . 匹配除「\n」之外的任何單個字元。 要匹配包括「\n」在內的任何字元,請使用像「[.\n]」的模式。 如果不加s modifier的話 我用 [\s\S]+ 可以正常抓的到 為什麼用 [.\n]+ 或 [.\r\n]+ 就抓不到? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.71.185.158

09/11 09:11, , 1F
因為那上面似乎弄錯了 那個的正確寫法應該是 (.|\n)
09/11 09:11, 1F

09/11 09:11, , 2F
. 在 [] 裡就只是一個點 其他什麼都不是
09/11 09:11, 2F

09/11 09:15, , 3F
!!!!!!!!!!!!!!! 原來[.]只是點喔,誤會太久了@@
09/11 09:15, 3F

09/11 09:17, , 4F
可是用(.|\n)就只能取一個字元,要多行匹配只能用[\s\S]+
09/11 09:17, 4F

09/11 09:18, , 5F
這類的嗎?還是有其他方法?
09/11 09:18, 5F

09/11 09:27, , 6F
以上為例,除了用([\s\s]+),還有其他方式能達成同目的嗎?
09/11 09:27, 6F

09/11 09:38, , 7F
試成功了 ((?:.|\n)+) 感謝 LPH大
09/11 09:38, 7F

09/11 20:49, , 8F
<text>(.*\n)*</text>
09/11 20:49, 8F
文章代碼(AID): #1ER0dIaK (RegExp)
討論串 (同標題文章)
文章代碼(AID): #1ER0dIaK (RegExp)