我有一个 HTML 文件文件夹,其中包含我需要删除的以下 DOCTYPE 声明,以便不太好的解析器可以成功地将其加载为 XML。
我一直在尝试使用 perl 进行替换,但是当我运行替换时没有进行任何更改,我不知道为什么。任何人都可以识别我需要制作的正确标志或规范,以便在此处删除 DOCTYPE 处理指令。
这是我想操作的示例文件。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org" />
<title></title>
</head>
<body>
</body>
</html>
这是我正在尝试使用的 perl 单行代码,它查找尖括号、感叹号以及右尖括号之前的所有内容。它包含 perl 替换标志,其他帖子建议应该适用于多行匹配 - m 用于多行,s 用于允许换行符与正则表达式匹配。然后我用空字符串替换匹配项。
perl -i -e 's/<![^>]+>//gsm' `find . -name '*.html'`
我不知道为什么,但运行此命令后 DOCTYPE 并未从文件中删除。还有人知道为什么吗?