正则表达式:从 html 文件中删除所有注释,但保留相同的行数
Regex : Remove all comments from html file BUT preserve same number of lines
如果文件中的注释占了 6 行,则应删除该注释并用等于注释行数的空行替换。
这是我的意思的一个小例子。鉴于 file.html 有 10 行 :
line 1 : <!-- text
line 2 : text
line 3 : text
line 4 : empty line
line 5 : text
line 6 : -->
line 7 :empty line
line 8 :text
line 9 :empty line
line 10 :text
预期输出为:
line 1 :empty line
line 2 :empty line
line 3 :empty line
line 4 :empty line
line 5 :empty line
line 6 :empty line
line 7 :empty line
line 8 :text
line 9 :empty line
line 10 :text
我当前使用的模式 preg_replace('/(?=<!--)([\s\S]*?)-->/', '', $contents);
将文件内容替换为空字符串,该空字符串不会保留与文件之前相同的行数。
请注意,任何解决方案都需要保持文件的结构,这样第 8 行和第 10 行的文本就不会改变文件中的位置。
编辑:不知道为什么这被标记为重复。它与假定的重复问题完全不同,因为人们通常想知道如何解析 dom,而不是我非常具体和集中的问题,即在不改变文件的情况下删除文件中的注释文本该文件中的行数。
您可以使用此搜索进行搜索:
(?:^\h*<!--|(?<!\A|-->\n)\G).*\R
并将其替换为 "\n"
正则表达式详细信息:
(?:
: 启动非捕获组
^
: 行首
\h*<!--
:匹配0个或多个空格后跟<!--
|
: 或
(?<!\A|-->\n)
:如果我们有起始位置或我们有 -->
+ 前一个位置的换行符,则否定后视以避免匹配
\G
: 上一场比赛的比赛结束位置
)
:结束非捕获组
.*\R
:匹配行中剩余的字符后跟换行符
如果文件中的注释占了 6 行,则应删除该注释并用等于注释行数的空行替换。
这是我的意思的一个小例子。鉴于 file.html 有 10 行 :
line 1 : <!-- text
line 2 : text
line 3 : text
line 4 : empty line
line 5 : text
line 6 : -->
line 7 :empty line
line 8 :text
line 9 :empty line
line 10 :text
预期输出为:
line 1 :empty line
line 2 :empty line
line 3 :empty line
line 4 :empty line
line 5 :empty line
line 6 :empty line
line 7 :empty line
line 8 :text
line 9 :empty line
line 10 :text
我当前使用的模式 preg_replace('/(?=<!--)([\s\S]*?)-->/', '', $contents);
将文件内容替换为空字符串,该空字符串不会保留与文件之前相同的行数。
请注意,任何解决方案都需要保持文件的结构,这样第 8 行和第 10 行的文本就不会改变文件中的位置。
编辑:不知道为什么这被标记为重复。它与假定的重复问题完全不同,因为人们通常想知道如何解析 dom,而不是我非常具体和集中的问题,即在不改变文件的情况下删除文件中的注释文本该文件中的行数。
您可以使用此搜索进行搜索:
(?:^\h*<!--|(?<!\A|-->\n)\G).*\R
并将其替换为 "\n"
正则表达式详细信息:
(?:
: 启动非捕获组^
: 行首\h*<!--
:匹配0个或多个空格后跟<!--
|
: 或(?<!\A|-->\n)
:如果我们有起始位置或我们有-->
+ 前一个位置的换行符,则否定后视以避免匹配\G
: 上一场比赛的比赛结束位置
)
:结束非捕获组.*\R
:匹配行中剩余的字符后跟换行符