nul*_*dev 4 html regex bash perl pcre
我编写了以下PCRE正则表达式来从HTML页面中删除脚本: <script.*?>[\s\S]*?< *?\/ *?script *?>
它适用于许多在线PCRE正则表达式测试人员:
https://regex101.com/r/lsxyI6/1
https://www.regextester.com/?fam=102647
它不是当我在bash终端运行下面的Perl替换命令工作:cat tmp.html | perl -pe 's/<script.*?>[\s\S]*?< *?\/ *?script *?>//g'
我使用以下测试数据:
<script>
$(document).ready(function() {
var url = window.location.href;
var element = $('ul.nav a').filter(function() {
if (url.charAt(url.length - 1) == '/') {
url = url.substring(0, url.length - 1);
}
return this.href == url;
}).parent();
if (element.is('li')) {
element.addClass('active');
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
PS我正在使用正则表达式解析HTML,因为当页面上有复杂的脚本时,我被迫使用的HTML解析器(xmlpath)会中断.我正在使用此正则表达式从页面中删除脚本,然后将其传递给解析器.
zzx*_*xyz 10
你需要告诉perl不要将文件的每一行拆分成它自己的单独记录-0.
perl -0 -pe 's/<script.*?>[\s\S]*?< *?\/ *?script *?>//g' tmp.html
Run Code Online (Sandbox Code Playgroud)
这实际上告诉perl打破记录'\0'. perl -0777将非常明确地诋毁整个文件.
| 归档时间: |
|
| 查看次数: |
204 次 |
| 最近记录: |