C# Regex将从asp.net Webform中删除HTML注释,但保留#include和knockout语句

C# Regex将从asp.net Webform中删除HTML注释,但保留#include和knockout语句,c#,asp.net,regex,knockout.js,webforms,C#,Asp.net,Regex,Knockout.js,Webforms,我想缩小asp.net中的asp.net Web表单页面。 因此,在部署之前,我使用这个 根据该实用程序,它将删除HTML和敲除注释,而不管是否忽略敲除注释。它还将从aspx中删除#include文件 1. <!-- normal html comments --> 2. <!-- ko if:knockoutComments() --> 3. <!-- /ko --> 4. <!-- #include file="" --> 1. 2. 3. 4

我想缩小asp.net中的asp.net Web表单页面。 因此,在部署之前,我使用这个 根据该实用程序,它将删除HTML和敲除注释,而不管是否忽略敲除注释。它还将从aspx中删除#include文件

1. <!-- normal html comments --> 2. <!-- ko if:knockoutComments() --> 3. <!-- /ko --> 4. <!-- #include file="" --> 1. 2. 3. 4. 我只需要替换第一个语句。
欢迎所有可行的正则表达式和非正则表达式解决方案。

这里有一个合适的正则表达式:

<!-- (?!(ko|\/ko|#include)).*? -->


可能最好使用knockout源代码内部使用的正则表达式:

var startCommentRegex=commentNodeSaveTextProperty
? /^$/ 
:/^\s*ko(?:\s+([\s\s]+)?\s*$/;
var endCommentRegex=commentNodesHaveTextProperty
? /^$/ 
:/^\s*\/ko\s*$/;
您必须将它们重写为您正在使用的js正则表达式语法以外的任何语法


来源:

非常感谢!你救了我一天:)@sushilkanojia没问题,这就是为什么;)请记住向上投票并标记正确答案!祝您有个美好的一天
var startCommentRegex = commentNodesHaveTextProperty 
    ? /^<!--\s*ko(?:\s+([\s\S]+))?\s*-->$/ 
    : /^\s*ko(?:\s+([\s\S]+))?\s*$/;
var endCommentRegex =   commentNodesHaveTextProperty 
    ? /^<!--\s*\/ko\s*-->$/ 
    : /^\s*\/ko\s*$/;