[問題] 包含換行符的文字處理

看板Linux作者 (項為之強)時間9年前 (2016/02/29 21:04), 編輯推噓0(007)
留言7則, 4人參與, 最新討論串1/1
我想把某 html 的 javascript 都切掉, 用 perl 寫就是 ` $html =~ s#<script(.|\n)*?</script>##g ; ` 我想知道有沒有單行的寫法。 `perl -pe` 會變成逐行處理, 而 sed 和 awk 又只有處理單行內的比較方便。 sed 還沒有貪婪模式……。 我用的方法: $ tr '\n' '\0' < foo.html | perl -pe '...' | tr '\0' '\n' -- 因為她不知道,唯一值得她流淚的人,絕不會讓她流淚。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.102.204 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1456751085.A.0DA.html

02/29 21:53, , 1F
perl -0777 -p -e 's{<script>(.*?)</script>}{}gs;'
02/29 21:53, 1F

03/01 17:35, , 2F
javascript這種一般性程式,用regex無法100%正確處理,絕大
03/01 17:35, 2F

03/01 17:35, , 3F
多數情況OK,就看會不會遇到例外
03/01 17:35, 3F

03/02 20:41, , 4F
樓上是遇到 var endTag = '</script>'; 嗎 XD
03/02 20:41, 4F

03/02 20:44, , 5F
碰到樓上那種寫法,regex 應該就爆了吧 XD
03/02 20:44, 5F

03/02 23:08, , 6F
除了字串之外,被註解掉的</script>也是例外之一
03/02 23:08, 6F

03/03 00:59, , 7F
應該說是html的結構造成的結果,用XML或DOM處理可能會較容易
03/03 00:59, 7F
文章代碼(AID): #1Mr47j3Q (Linux)