[问题] 包含换行符的文字处理

楼主: Gold740716 (项为之强)   2016-02-29 21:04:41
我想把某 html 的 javascript 都切掉,
用 perl 写就是 ` $html =~ s#<script(.|\n)*?</script>##g ; `
我想知道有没有单行的写法。
`perl -pe` 会变成逐行处理,
而 sed 和 awk 又只有处理单行内的比较方便。
sed 还没有贪婪模式……。
我用的方法:
$ tr '\n' '\0' < foo.html | perl -pe '...' | tr '\0' '\n'
作者: Neisseria (Neisseria)   2016-02-29 21:53:00
perl -0777 -p -e 's{<script>(.*?)</script>}{}gs;'
作者: bitlife (BIT一生)   2016-03-01 17:35:00
javascript这种一般性程式,用regex无法100%正确处理,绝大多数情况OK,就看会不会遇到例外
楼主: Gold740716 (项为之强)   2016-03-02 20:41:00
楼上是遇到 var endTag = '</script>'; 吗 XD
作者: Neisseria (Neisseria)   2016-03-02 20:44:00
碰到楼上那种写法,regex 应该就爆了吧 XD
作者: bitlife (BIT一生)   2016-03-02 23:08:00
除了字串之外,被注解掉的</script>也是例外之一
作者: soem (流水)   2016-03-03 00:59:00
应该说是html的结构造成的结果,用XML或DOM处理可能会较容易

Links booklink

Contact Us: admin [ a t ] ucptt.com