如何删除Python中的ASP注释块(在Sublime Text 2上)?

时间:2015-11-24 18:06:51

标签: python regex asp-classic sublimetext2 sublime-text-plugin

我正在使用Python Regex,以便清理为经典ASP页面生成的代码。

我需要删除SINGLE LINE或MULTILINE ASP注释块。 (ASP注释行通常以引用开头)。

我的目标是匹配不包含可执行代码的块,但只包含包含注释的块。 在评论中有标签或空格,我需要替换这三个字符串:

字符串1:

<%'     This multiline comment starts with two TAB characters after the quote
'and continues here
%>

字符串2:

<%    'This multiline comment starts with SPACES characters before the quote
        'and continues here, with TABS before the quote
    '     and with spaces before and after the quote
%>

字符串3:

<%'This single line comment should at least be easy to remove%>

我尝试了以下正则表达式,但只获得了部分成功......: - /

output = re.sub(r'(<%(.*?)\')(.*?)(%>)', r'', output)
output = re.sub(r'<%(\t*|\s*)\'(.*)(%>)', r'', output)
你可以给我一点建议吗? 非常感谢您的帮助:任何提示都将受到高度赞赏; - )

1 个答案:

答案 0 :(得分:1)

重新开始。
假设:

如果该行以单引号开头,则为其注释 使用引用行获取所有块 点.元素匹配换行符。

<%(?:\s*'.*)+\s*%>

格式化

 <%
 (?: \s* ' .* )+
 \s* 
 %>

匹配所有样品。

修改

为安全起见,您应该在该点之前使用否定断言。

<%(?:\s*'(?:(?!%>).)*)+\s*%>

格式化

 <%
 (?:
      \s* ' 
      (?:
           (?! %> )
           . 
      )*
 )+
 \s* 
 %>