如何删除 Python 中的 ASP 仅评论块(在 Sublime Text 2 上)?

How to remove ASP comments-only blocks in Python (on Sublime Text 2)?

我正在玩 Python 正则表达式,以便清理为经典 ASP 页面生成的代码。

我需要删除单行或多行 ASP 评论块。 (ASP 注释行通常以 引用 开头)。

我的目标是匹配不包含可执行代码的块,但只匹配包含注释的块。 如果评论中有制表符或空格,我需要将这 3 个字符串替换为空:

字符串 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)

你能给我一点建议吗? 非常感谢您的帮助:任何提示将不胜感激 ;-)

重新开始。
假设:

如果该行以单引号开头,则为注释。
获取所有包含 引用行的块。
. 元字符 匹配换行符。

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

格式化

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

与您的所有样本相匹配。

编辑

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

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

格式化

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